0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ASP.NET Core Identityの自習記録(.NET FrameworkCore3.0) 1日目

Last updated at Posted at 2020-09-12

この自習の目標

  • MVC.NET Coreの認証無しテンプレートで作成されたWebページにASP.NET Core Identityで認証を追加する
  • 保存領域として、Postgresを利用
  • ユーザー情報にカスタム項目を追加する
  • ユーザー情報にいろいろなRoleを追加する
  • その他、ある程度業務で使うだろう範囲で、色々いじくる&使い方を覚える

こんな感じで行こうと思っています。
当方たいした知識は無いので間違っていたら突っ込んでください・・・

###1.最低限認証が実施できる物を作成する
####1-1.素のMVC.NET Coreを作成する
※ここは説明いらないと思いますが、
VS2019で新規プロジェクト>ASP.NET Core Webアプリケーションを選択
次の画面の設定はこんな感じ
mojikyo45_640-2.gif
※基本的に認証付きで作成したテンプレートに近づけていく作業です。

####1-2.参照パッケージ
 Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
 Microsoft.AspNetCore.Identity.EntityFrameworkCore
 Microsoft.AspNetCore.Identity.UI
 Microsoft.EntityFrameworkCore
 Npgsql.EntityFrameworkCore.PostgreSQL
 Microsoft.EntityFrameworkCore.Tools

####1-3.DBContext追加
 TestApplicationDbContext.csを作成して、Identityのクラスを継承したEFクラスを作成

TestApplicationDbContext.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace WebTeqKensho.Data
{
    public class TestApplicationDbContext : IdentityDbContext
    {
        public TestApplicationDbContext(DbContextOptions<TestApplicationDbContext> options)
    : base(options)
        {
        }
    }
}

####1-4.ログインリンクの追加
 _LoginPartial.cshtmlを作成して、ログイン用のリンクのテンプレを作成

_LoginPartial.cshtml
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

<ul class="navbar-nav">
    @if (SignInManager.IsSignedIn(User))
    {
        <li class="nav-item">
            <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @User.Identity.Name!</a>
        </li>
        <li class="nav-item">
            <form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Action("Index", "Home", new { area = "" })">
                <button type="submit" class="nav-link btn btn-link text-dark">Logout</button>
            </form>
        </li>
    }
    else
    {
        <li class="nav-item">
            <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Register">Register</a>
        </li>
        <li class="nav-item">
            <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a>
        </li>
    }
</ul>

 標準のテンプレートにログインテンプレの読み込みを追加(_Layout.cshtmlの20行目に追加)

_Layout.cshtml
<partial name="_LoginPartial" />

####1-5.Startup.csの設定
 ConfigureServicesに処理を追加

Startup.cs
        public void ConfigureServices(IServiceCollection services)
        {
            //EntityFramework接続の設定
            services.AddDbContext<TestApplicationDbContext>(options =>
                options.UseNpgsql(
                Configuration.GetConnectionString("DefaultConnection")));
            //Identityと接続を紐付ける
            services.AddDefaultIdentity<IdentityUser>()
                .AddEntityFrameworkStores<TestApplicationDbContext>();
            services.AddControllersWithViews(); //既存
        }

 Configureに処理を追加

Startup.cs
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();
            app.UseAuthentication();      //認証のために追加
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();   //認証の為のページ遷移設定の読み込み
            });

####1-6.接続情報をappsettings.jsonに追加

※接続情報は人それぞれなので適当に変えてください。

appsettings.json
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Port=5432;User Id=tester;Password=tester;Database=testDB"
  },

####1-7.マイグレーションをしてDBにテーブルを追加

アップデート用ファイル作成(パッケージマネージャコンソールで実行)

Add-Migration firstIdentity

実行

Update-Database -Verbose

以上で最低限identityを利用して認証するための下準備が完了。
次回からは、カスタマイズを中心に調べていきますよ。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?