使用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
非常感谢任何帮助。
答案 0 :(得分:1)
即使控制器和视图授权了编辑器角色,我的布局也在使用
在另一个控制器中调用一个动作@Html.Action(...
那个控制器
[Authorize(Roles = "Admin")]
高于其类定义。
因此,DotNet决定(尽管它已经通过整个视图和布局的渲染代码继续)反弹回登录页面。
感谢@MarkHomer。他的评论让我想到了这个想法。
我通过将[授权(角色="管理员,编辑器")]置于类定义之上,然后为个人设置[授权(角色="管理员")]来解决问题只需要管理员访问权限的操作。
答案 1 :(得分:0)
您必须在成功登录后将用户重定向到RedirectURL。您是否检查过您的登录用户在此重定向期间或一旦到达重定向的URL后仍然存在。