【发布时间】:2015-07-11 13:35:31
【问题描述】:
我们已经实现了 Google OAuth2,它在 ASPNetUsers 表中创建用户。这工作正常,我们可以通过 User.Identity.GetUserName() 看到经过身份验证的用户。
如果我们将此用户添加到一个角色,比如“MyCustomRole”,通过 AspNetRoles 和 AspNetUserRoles 表,任何受以下保护的方法:
[Authorize(Roles="MyCustomRole")]
无法访问。应用程序将经过身份验证的用户转发到登录控制器。
将这些经过外部身份验证的用户添加到角色的正确机制是什么,让这些角色可以通过 [Authorize(Roles="")] 属性访问?
【问题讨论】:
-
原来我在过滤器中使用的是 ID 而不是名称。因此,不需要 [Authorize(Roles="MY_ROLE_ID")],它需要简单地是 [Authorize(Roles="MyRole")]。能够通过 OAuth2 向由外部系统验证的用户添加角色非常好,也非常简单,只需像添加任何其他类型的用户一样将行添加到 AspNetUserRoles。
标签: asp.net asp.net-mvc asp.net-mvc-5 google-oauth asp.net-identity