[MVC3] 在同一DomainName下的第一個應用程式登入後,第二個應用程式會自動登入 的解決辦法

[MVC3] 在同一DomainName下的第一個應用程式登入後,第二個應用程式會自動登入 的解決辦法

第三次在論壇上遇到類似的問題,由於第三次發問者有貼Code,所以大概瞭解情況

這裡做個備忘錄(說不定未來變成是我遇到這種問題)

 

先模擬環境

有兩個MVC3專案(app1、app2),都是form驗證登入

兩個網站都是在Visual Studio上開發執行測試

(以下使用MVC3專案範本的網站來Demo)

 

app1執行起來的網址為:http://localhost:30835/

app2執行起來的網址為:http://localhost:30846/

 

image

 

我先到app1註冊一個名為shadow的帳戶

註冊成功後即自動登入

image

 

這時候若把app2的網址http://localhost:30846貼到左方視窗瀏覽的話

image

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先登入

image

之後再把app2的網址貼到左方的瀏覽器去瀏覽結果:

image

 

結果不會再自動登入,完成~

 

類似問題:二個虛擬目錄, 同時登入, 有一個會被登出关于ASPNET Form 验证,以及 Request.IsAuthenticated,User.Identity.IsAuthenticated