今日はASP.Net Core Identityのおさらいから

ASP.NET Core Identity is a membership system which allows you to add login functionality to your application. Users can create an account and login with a username and password or they can use an external login provider such as Facebook, Google, Microsoft Account, Twitter or others.

You can configure ASP.NET Core Identity to use a SQL Server database to store usernames, passwords, and profile data. Alternatively, you can use your own persistent store, for example, an Azure Table Storage. This document contains instructions for Visual Studio and for using the CLI.

アプリケーションにてログイン機能を提供してくれるのがASP.Net Core Identityで、Facebok, Google, MS Account, Twitterなどの他ログインサービスでもアプリケーションのログイン機能が使えるようになる便利な機能ということですね。

基本はSQLを使うようですが、Azure Table Storageなどほかのソリューションでも展開が可能。

では早速プロジェクト作っていきます。

20180505-1.PNG

ASP.NET Core Web アプリケーションを選択

20180505-2.PNG

個別のユーザーアカウントを選択します。

Startup.csをはじめに編集します。ディフォルトこんな感じです。


// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
  services.AddDbContext<ApplicationDbContext>(options =>
  options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

  services.AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

  // Add application services.
  services.AddTransient<IEmailSender, EmailSender>();

  services.AddMvc();
}

ここにパスワードのオプションやら、クッキーのオプションやらを追加します。

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
  services.AddDbContext<ApplicationDbContext>(options =>
  options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

  services.AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

  services.Configure<IdentityOptions>(options =>
  {
    // Password settings
    options.Password.RequireDigit = true;
    options.Password.RequiredLength = 8;
    options.Password.RequireNonAlphanumeric = false;
    options.Password.RequireUppercase = true;
    options.Password.RequireLowercase = false;
    options.Password.RequiredUniqueChars = 6;

    // Lockout settings
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
    options.Lockout.MaxFailedAccessAttempts = 10;
    options.Lockout.AllowedForNewUsers = true;

    // User settings
    options.User.RequireUniqueEmail = true;
  });

  services.ConfigureApplicationCookie(options =>
  {
    // Cookie settings
    options.Cookie.HttpOnly = true;
    options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
    // If the LoginPath isn't set, ASP.NET Core defaults
    // the path to /Account/Login.
    options.LoginPath = "/Account/Login";
    // If the AccessDeniedPath isn't set, ASP.NET Core defaults
    // the path to /Account/AccessDenied.
    options.AccessDeniedPath = "/Account/AccessDenied";
    options.SlidingExpiration = true;
  });

  // Add application services.
  services.AddTransient<IEmailSender, EmailSender>();

  services.AddMvc();
}

さて、次はこのDefaultConnectionと言われいてるDBの設定をします。

appsettings.jsonファイルを見てみると

{
  "ConnectionStrings": {
  "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-wpp5CPN1-E3367D08-10D1-46C8-B0E4-507ADC0ABE86;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

となっていますので、ここのDefaultConnection部分を今回はAzureにあるSQLに変えてみます。

20180505-3.PNG

ここから “Show database connection strings”をクリックすると。

20180505-4.PNG

ので、これをそのままコピペしちゃいましょう。

では早速テスト。localhost にて /Account/Register といれると20180505-5.PNG

こんな感じにメールアドレスとパスワード入れてくださいと出てきます。言われたとおりに進めると、またトップページに戻り、メニューを見てみるとログインできていることがわかります。

20180505-6.PNG

 

今日は以上です。ここから色々応用していこうと思います。

 


こちらの本家ページを参照:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-2.1&tabs=visual-studio%2Caspnetcore2x

広告