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>
參考資料:
Security, Authentication, and Authorization with ASP.NET MVC