AspNet MVC将我反弹回登录AFTER渲染默认视图

时间:2016-05-31 08:14:57

标签: c# .net asp.net-mvc

使用Aspnet Identity(SignInStatus.Success)成功登录后,MVC会浏览默认操作和视图的整个代码,但然后神秘地将我弹回到登录页面。

奇怪的是,这只发生在我的一个用户角色中。我有两个角色,管理员编辑器管理员工作正常。 编辑用于工作。

这是我的默认视图授权码...

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

如果有人可以提出问题的原因,或者我如何调试它,那将非常感激。我碰到了一堵砖墙。调试器步骤没有错误,直到操作代码,视图代码和布局代码直到布局中最后一行Razor,这是

@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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

即使控制器和视图授权了编辑器角色,我的布局也在使用

在另一个控制器中调用一个动作
@Html.Action(...

那个控制器

[Authorize(Roles = "Admin")]

高于其类定义。

因此,DotNet决定(尽管它已经通过整个视图和布局的渲染代码继续)反弹回登录页面。

感谢@MarkHomer。他的评论让我想到了这个想法。

我通过将[授权(角色="管理员,编辑器")]置于类定义之上,然后为个人设置[授权(角色="管理员")]来解决问题只需要管理员访问权限的操作。

答案 1 :(得分:0)

您必须在成功登录后将用户重定向到RedirectURL。您是否检查过您的登录用户在此重定向期间或一旦到达重定向的URL后仍然存在。