【发布时间】:2013-12-10 06:55:05
【问题描述】:
我已将在 Windows Azure 云服务中运行的 Web 应用程序从 MVC 4 模板的默认会员系统迁移到新的基于 OWIN 的 ASP.NET 身份提供程序。
该应用程序严重依赖角色,由于某种原因,该角色在升级后已停止在 Azure 上运行。
我的控制器或动作用[Authorize] 装饰。这工作正常,除非我指定角色 [Authorize(Roles = "User.Test")] 并在 Azure 计算模拟器中运行它。现在我将无限重定向到登录页面并返回(我已登录,但由于某种原因它不接受该角色)。
有趣的是,如果我直接调试/运行 Web 项目(所以不使用 Azure 模拟器),一切正常。
关于如何在 Azure 上运行此功能的任何想法?我还没有发生过这种行为,所以我有点不知所措。
2013 年 11 月 26 日更新
我在 VS2013 中发现了与默认 MVC 5 模板类似的行为。有关如何在不使用 Azure 的情况下重现此问题的步骤,请参阅此 forum thread on ASP.NET。
【问题讨论】:
-
您是否检查过您在 Azure 中使用的数据库在连接到 AspNetUsers 表中用户的 AspNetUserRoles 和 AspNetRoles 中有正确的行?
-
Authorize Attribute 和 User.IsInRole 在比较时区分大小写。
-
@OlavNybø,是的,这都是正确的。
-
@jd4u,我知道这一点。大小写完全一样。
-
更改当前用户的角色需要您重新创建 ClaimsIdentity 以处理后续请求。角色检查是基于在身份验证过程中填充的 ClaimsIdentity.Claims 完成的。
标签: c# azure asp.net-mvc-5 asp.net-identity