Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9711

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

$
0
0

この自習の目標

  • 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
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.AspNetCore.Identity.EntityFrameworkCore;usingMicrosoft.EntityFrameworkCore;namespaceWebTeqKensho.Data{publicclassTestApplicationDbContext:IdentityDbContext{publicTestApplicationDbContext(DbContextOptions<TestApplicationDbContext>options):base(options){}}}

1-4.ログインリンクの追加

 _LoginPartial.cshtmlを作成して、ログイン用のリンクのテンプレを作成

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

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

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

_Layout.cshtml
<partialname="_LoginPartial"/>

1-5.Startup.csの設定

 ConfigureServicesに処理を追加

Startup.cs
publicvoidConfigureServices(IServiceCollectionservices){//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を利用して認証するための下準備が完了。
次回からは、カスタマイズを中心に調べていきますよ。


Viewing all articles
Browse latest Browse all 9711

Trending Articles