ASP.NET Identity start example

 

一、範例準備

一開始創建空的 MVC 架構網站

 

為了 Demo 方便而把現有的程式碼直接複製進來,檔案結構如下

總共要複製的項目如下

App_Start\IdentityConfig.cs

App_Start\Startup.Auth.cs

Controllers\AccountController.cs

Controllers\ManageController.cs

Models\AccountViewModels.cs

Models\IdentityModels.cs

Models\ManageViewModels.cs

Views\Account\*

Views\Manage\*

Views\Shared\_LoginPartial.cshtml

Views\Shared\Lockout.cshtml

Startup.cs

 

而這裡也提供了已經複製好的範例檔

 

二、安裝 OWIN 套件

接下來利用 package manager console 來安裝 OWIN 所需的必要套件

1、必要安裝

Install-Package Microsoft.AspNet.Identity.EntityFramework

Install-Package Microsoft.AspNet.Identity.Owin

Install-Package Microsoft.Owin.Host.SystemWeb

2、可不安裝(選項)

Install-Package Microsoft.Owin.Security.Google

 

三、程式修改

於 Models/IdentityModels.cs 裡,修改連線參數名為 OWINDB

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("OWINDB", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

你也可以將連線參數名稱指定成已存在的資料庫名稱。

 

於 Views\Shared\_Layout.cshtml 裡添加如黃色框內容

<div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li>@Html.ActionLink("Home", "Index", "Home")</li>
        <li>@Html.ActionLink("About", "About", "Home")</li>
        <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
    </ul>
    @Html.Partial("_LoginPartial")
</div>

 

把專案 RUN 起來,然後在 Login 頁面的欄位隨意填入並登入,

此動作當然會登入失敗,不過醉翁之意不在酒,

其目的是程式會藉由此動作來自動建立資料庫,

我想這應該是 code first 關係。

所產生的資料庫如下圖。

 

而另外一種是在 web.config 檔裡面特別指名連線參數,

如下範例的連線參數,將資料庫檔案創在專案資料夾裡面,

並將之掛載在 localDb。

<configuration>
  <connectionStrings>
    <add name="OWINDB" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\OWINDB.mdf;Initial Catalog=OWINDB;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

 

參考資料:

ASP.NET Identity

Security, Authentication, and Authorization with ASP.NET MVC

Introduction to Identity on ASP.NET Core

將 ASP.NET Identity 加至 ASP.NET MVC Empty 專案中