[MVC3] 在同一DomainName下的第一個應用程式登入後,第二個應用程式會自動登入 的解決辦法
第三次在論壇上遇到類似的問題,由於第三次發問者有貼Code,所以大概瞭解情況
這裡做個備忘錄(說不定未來變成是我遇到這種問題)
先模擬環境
有兩個MVC3專案(app1、app2),都是form驗證登入
兩個網站都是在Visual Studio上開發執行測試
(以下使用MVC3專案範本的網站來Demo)
app1執行起來的網址為:http://localhost:30835/
app2執行起來的網址為:http://localhost:30846/
我先到app1註冊一個名為shadow的帳戶
註冊成功後即自動登入
這時候若把app2的網址http://localhost:30846貼到左方視窗瀏覽的話
app2便會自動登入(但事實上app2沒有此帳戶)
原因請見討論:一個方案中有2個MVC3專案遇到的登入問題?
解法為修改兩個網站Web.config裡
<authentication mode="Forms">
<forms name="app1" loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
forms加一個name的自訂名稱(預設值為 ".ASPXAUTH"),參考:驗證的 forms 項目 (ASP.NET 設定結構描述)
第二個網站的Web.config
<authentication mode="Forms">
<forms name="app2" loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
修改完後,再度看執行結果:
我先從左方的app1先登入
之後再把app2的網址貼到左方的瀏覽器去瀏覽結果:
結果不會再自動登入,完成~
類似問題:二個虛擬目錄, 同時登入, 有一個會被登出、关于ASPNET Form 验证,以及 Request.IsAuthenticated,User.Identity.IsAuthenticated