【问题标题】:Authorize Attribute Does Not Work on Azure With OWIN授权属性在带有 OWIN 的 Azure 上不起作用
【发布时间】: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


【解决方案1】:

好的,由于某种原因,我自己使用了来自 MyGet 的 Owin 和 Identity 库的预发布版本,导致了这整个混乱。

删除所有软件包并安装稳定版本解决了我的所有问题。

【讨论】:

    【解决方案2】:

    这个对我有用:

    <system.webServer>
        <modules>
          <remove name="RoleManager" /> <!-- <<<<< -->
    

    【讨论】:

      猜你喜欢
      • 2014-10-27
      • 2014-07-19
      • 1970-01-01
      • 2015-09-09
      • 2019-07-23
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      相关资源
      最近更新 更多