[ C# 開發隨筆 ] MVC5 Form Authentication

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));

 若有任何錯誤再告知我,感謝!

如有指正之處,歡迎隨時提出