2011-05-20 31 views
26

我有一個帶有表單身份驗證的ASP.NET MVC 3應用程序。由於某些原因,我看不到,登錄重定向網址是/Account/Login?ReturnUrl=%2fSecure%2fAction而不是/Account/LogOn?ReturnUrl=%2fSecure%2fAction。差別很微妙,它使用/帳戶/ 登錄而不是/帳戶/ 登錄MVC Forms LoginUrl不正確

我的web.config表單部分是正確的。否則可能會影響登錄網址?

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="720" /> 
</authentication> 
+2

謝謝!我以爲我瘋了! – zvolkov 2012-08-07 18:59:09

+1

[FormsAuthentication LoginUrl]可能的重複(http://stackoverflow.com/questions/6447728/formsauthentication-loginurl) – ashes999 2016-06-22 18:17:56

回答

48

這是一個已知問題。我有我的自定義授權屬性相同的問題。我在網上找到了解決方案,不記得在哪裏。就在您的web.config

<add key="loginUrl" value="~/Account/LogOn" /> 

注添加到appSettings這適用於MVC 3,我沒有跟以前的版本試試吧。

編輯: 發現它在release notes提及,但似乎他們已經改變了設置名稱,忘了更新RTM版本發佈說明。

+0

謝謝!我不知道爲什麼我以前沒有遇到過這個問題。我創建了一些MVC 3應用程序,但從未遇到過這個問題。 – jrummell 2011-05-23 12:17:11

+0

所以我運行我的MVC 3應用程序,如果我更改 enorl76 2011-12-15 20:01:52

+0

我在運行aspnet_regiis後突然發生這種情況。非常感謝你,如果在搜索我的項目時發現沒有提及「登錄」,我就會沉迷於此。 – Quibblesome 2012-08-15 15:27:31

1

它是否源自LogOn操作結果中包含的重定向?

在項目中搜索字符串LogIn,您可能會發現它在哪裏指定?

+0

不,它沒有進入/ Account/LogOn。我在/ Account/Login上獲得一個404。 – jrummell 2011-05-20 15:35:33

7

frennky的回答幫我解決了這個問題。我需要所有這些在我的web.config中:

<appSettings> 
    <add key="loginUrl" value="~/Authentication/LogOn" /> 
</appSettings> 

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/Authentication/LogOn" timeout="2880"></forms> 
    </authentication> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
</system.web> 
+0

謝謝。現在正在工作。 事情是你必須添加這兩個設置。否則它不工作。 – cp100 2013-12-30 03:52:19

+0

我嘗試過,但對於該區域,它不適合我 – 2015-10-24 07:47:46

14

我前面遇到類似的問題。幾個月後,我發現了問題的根源:我在'具有Razor語法的ASP.NET網頁'上添加了「可部署的依賴項」。這增加了一個參考:WebMatrix.Data.dll 此組件具有一個靜態構造函數,做以下的類:

static FormsAuthenticationSettings() 
{ 
FormsAuthenticationSettings.LoginUrlKey = "loginUrl"; 
FormsAuthenticationSettings.DefaultLoginUrl = "~/Account/Login"; 
} 

檢查您是否引用這個DLL。

5

要解決這個問題,它仍然存在於MVC 3中,您必須分別從_bin_deployableAssemblies和bin文件夾中刪除WebMatrix。*。dll。

+0

這解決了我在其他較新的MVC3項目中遇到的問題。 – jrummell 2012-02-13 13:08:30

2

取而代之的是:

<appSettings> 
    <add key="loginUrl" value="~/Authentication/LogOn" /> 
</appSettings> 

您可以使用此:

<appSettings> 
    <add key="PreserveLoginUrl" value="true" /> 
</appSettings> 

它爲我工作。

+0

不適用於我,在區域嘗試,而我有錯誤說'PreserveLoginUrl'是不允許的。 – 2015-10-24 07:49:27

+1

使用MVC 5.2.3.0工作。 – 2017-06-22 14:56:30

1

我剛剛遇到了這個問題(就像6年後,這個網頁在搜索中排名不高......)我的修復與santiagoIT類似。

因爲我添加認證到以前沒有它,我幾乎從默認的項目模板,其中包括複製所需的認證碼「被騙」的一個項目:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      LoginPath = new PathString("/Account/Login"), 
      Provider = new CookieAuthenticationProvider 
      { 
       OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(30), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
      } 
     }); 

窗體身份驗證URL使用web.config爲我所有的aspx頁面,但當我添加Authorize屬性時被轟炸。

更改LoginPath修復了我的問題。

+0

這實際上是一個不同的問題,因爲您正在使用asp.net標識,這是處理身份驗證的現代方式。 – jrummell 2018-02-03 15:58:42