How do I implement authentication using SQLite in Blazor?

Platform: Blazor|Category: General

When we run a Blazor application with a SQL Server localdb for storing authentication data, by following these steps we can implement SQLite in it:

  • Update the NuGet package.
  • Modify the Startup.cs file and connection string.
  • Modify the database migration code.

Updating the NuGet package:
Remove the Microsoft.EntityFrameWorkCore.SqlServer NuGet package from the current package manager and add the Microsoft.EntityFrameWorkCore.Sqlite package.

Modifying the Startup.cs file:
Change the Startup.cs file from options.UseSqlServer to options.UseSqlite.

using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.EntityFrameworkCore;
…………………. . .
namespace BlazSqlite
{
    public class Startup
    {
………………… . . 
public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<SqlDbContext>(options =>
                options.UseSqlite(
                    Configuration.GetConnectionString("DefaultConnection")));
            services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)…………… . }

Modify the connection string in the AppSettings.json file.

“DataSource=<yourdbname>.db” (points to your sqlite database file)

Modifying the database migration code:
Modify the database migration code to avoid the errors that would occur after performing the previous steps.
Change the “00000000000000_CreateIdentitySchema.cs” file as follows.

“.HasAnnotation(“SqlServer:ValueGenerationStrategy”, SqlServerValueGenerationStrategy.IdentityColumn)” or “.Annotation(“SqlServer:ValueGenerationStrategy”, SqlServerValueGenerationStrategy.IdentityColumn)”

to “.HasAnnotation(“Sqlite:Autoincrement”, true)” or “.Annotation(“Sqlite:Autoincrement”, true)”

Run the app and start registering a new user for authentication.
Refer to this link to learn how to create a SQL database with a Blazor Server application.
Refer to this link for more information about authentication with SQLite and Blazor.