2016-05-31 37 views
0

使用Aspnet Identity(SignInStatus.Success)成功登錄後,MVC會遍歷默認操作和視圖的整個代碼,但會神祕地將我彈回到登錄頁面。AspNet MVC將我彈回登錄後渲染默認視圖

奇怪的是,這隻發生在我的一個用戶角色中。我有兩個角色,admin編輯admin工作正常。 編輯用於工作。

這裏是我的默認視圖授權碼...

[Authorize(Roles = "Admin, Editor")] 
public ActionResult Index() 
{ ... 

如果任何人都可以提出這個問題可能是什麼,或者我怎麼能調試它,那將是非常讚賞。我撞到了一堵磚牆。沒有權利,通過操作代碼,視圖代碼錯誤調試器步驟,佈局代碼權剃刀的佈局的最後一行,這是

@RenderSection("Scripts", required: false) 

我已經試過了兩個不同的瀏覽器。我認爲這可能是一個反僞造令牌的問題。我確實收到了以下消息: 「提供的防僞令牌是針對與當前用戶不同的基於聲明的用戶」。

但我認爲這只是在調試過程中如此多登錄嘗試的一個小故障。

我跑...... VS 2015年 的.NET Framework 4.5.2 Microsoft.AspNet.Identity.Core,Microsoft.AspNet.Identity.EntityFramework,Microsoft.AspNet.Identity.Owin所有版本2.2.1

任何幫助將不勝感激。

+0

你可以顯示默認的視圖控制器/驗證碼? – Kamo

+0

AFAIK,過期AntiForgeryToken鍵會將用戶重定向到登錄頁面,如果您爲該頁面設置了默認異常處理程序。請出示您的控制器,查看以及導致問題的任何相關代碼。 –

+0

謝謝@Kamo我已經添加了ActionResult方法的授權代碼,我希望這是您的意思。 – clayRay

回答

1

即使控制器和視圖授權編輯的角色,我的佈局使用

@Html.Action(... 

調用另一個控制器的操作該控制器有

[Authorize(Roles = "Admin")] 

高於其類定義。

因此,DotNet決定(即使它已經貫穿整個視圖和佈局的渲染代碼),以反彈回登錄頁面。

感謝@MarkHomer。他的評論給了我這個想法。

我解決了這個問題,把[Authorize(Roles =「Admin,Editor」)]放在類定義的上方,然後設置[Authorize(Roles =「Admin」)],只需要管理員訪問權限。

0

您必須將用戶重定向到成功登錄後的RedirectURL。您是否檢查過您的登錄用戶在重定向過程中還是一直到重定向的URL。