MVC5 Form Authentication
這是在MVC的WEB專案上經常性用到的登入機制,但是在MVC5的專案中,他的預設是被移除的。既然是被移除那我們就是試著把他加回來囉!有兩個步驟依序介紹:
第一步 開啟表單驗證
首先,進入 Web Config 中 找到 system.web 的 tag ,這邊有兩種情況,一種是已經有了authentication 的 tag,但是 mode 是 none ,另一種就是完全沒有 authentication ,就把<authentication mode=”Forms”></authentication>加進去~~
程式碼如下:
<system.web>
<authentication mode="Forms"></authentication>
<customErrors mode="Off" defaultRedirect="~/Error">
<error redirect="~/Error/NotFound" statusCode="404" />
<error redirect="~/Error/DBError" statusCode="304" />
</customErrors>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
第二步 移除表單驗證
接著,同在 Web Config 中 <system.webServer> tag下的<remove name=”FormAuthentication” />註解掉,如果本來就沒有,就不要管他了!
<system.webServer>
<modules>
<!--<remove name="FormAuthentication" />-->
</modules>
</system.webServer>
完成上面兩個步驟後,就可以正常的使用表單驗證來做為登入,不會再有User.Identity.Name 抓不到東西的情況。
最後,如果是 Web APi 2 的專案 ,需再多執行一個步驟。
修改App_Start\WebApiConfig.cs
註解下方兩行程式碼 ,就可以用了!
程式碼如下:
// 將 Web API 設定成僅使用 bearer 權杖驗證。
//config.SuppressDefaultHostAuthentication();
//config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
若有任何錯誤再告知我,感謝!
如有指正之處,歡迎隨時提出