2010-08-01 18 views
0
我已經在web.config文件

將用戶重定向到登錄頁面,只有在asp.net MVC不authonticated

<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880"/> </authentication>

這甚至會導致身份驗證的用戶,但未經授權的資源被請求用戶以下標記

NET MVC項目重定向到登錄頁面。但我只需要重定向此頁面,如果用戶嘗試訪問未經授權的頁面,但尚未經過身份驗證(登錄)並重定向到自定義頁面。

有沒有簡單的方法來做到這一點,而無需編寫自定義操作過濾器?

回答

3

此行在web.config中所做的所有操作僅僅是定義認證cookie和登錄url的超時值。這是您的代碼,通過例如裝飾您的控制器和/或具有[Authorize]屬性的操作來決定網站的哪些部分已通過身份驗證或否。

+0

嗨季米特洛夫, 其實在我的項目我寫操作,如以下 [HttpPost] [授權( Roles =「Admin」)] public ActionResult編輯(字符串id,FormCollection集合){/ ** /} 點是如果用戶不在「Admin」角色中t在某些其他角色中,但他已經登錄該用戶也被重定向到具有上述web配置中的屬性的登錄頁面。 – DSharper 2010-08-01 07:40:00

+0

@DSharper:是的,ASP.NET不擅長處理403條Forbidden郵件 - 它可以是「允許」或「拒絕」,並且角色在那時不會進入。 – 2010-08-01 08:24:02

0

請檢查web.config文件中的「授權」設置。它應該是有點

<authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
    </authorization> 

也當用戶驗證成功確保你打電話

FormsAuthentication.SetAuthCookie(<username>, false); 
相關問題