asp.net - 向通过 Google OAuth2 创建的用户添加角色或声明

标签 asp.net asp.net-mvc asp.net-mvc-5 google-oauth asp.net-identity

我们已经实现了 Google OAuth2,它在 ASPNetUsers 表中创建了用户。这工作正常,我们可以通过 User.Identity.GetUserName() 看到经过身份验证的用户。

如果我们将此用户添加到角色,例如“MyCustomRole”,通过 AspNetRoles 和 AspNetUserRoles 表,任何方法都使用以下方法进行保护:

[Authorize(Roles="MyCustomRole")]

无法访问。应用程序将经过身份验证的用户转发到登录 Controller 。

将这些经过外部身份验证的用户添加到角色的正确机制是什么,使 [Authorize(Roles="")] 属性可以访问这些角色?

最佳答案

不确定是哪个版本的 asp identity您正在使用,但我使用此代码完成了您想要的操作

   [HttpPost]
    public async Task<ActionResult> AddUserToRole()
    {
     var result = await UserManager.AddToRolesAsync(User.Identity.GetUserId(),
 new[]{"YourCustomRole"});
    if (!result.Succeeded){ 
       return View();
    }
   else{
       return RedirectToAction("index");
     }
   }

要对此进行测试,您可能需要创建一个空项目,一个空的!然后在 newget 包中运行这个 nugetPM> Install-Package Microsoft.AspNet.Identity.Samples -Pre那么你可以把我的行动代码放在UsersAdmin Controller

关于asp.net - 向通过 Google OAuth2 创建的用户添加角色或声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29991632/

相关文章:

javascript - 使用 JQuery $.AJAX 调用调用 ASP.NET 函数

javascript - 使用 jQuery 动态添加 MVC DropdownList HTML Helper

c# - Ajax.BeginForm OnSuccess 未触发

c# - 同时使用属性路由和基于约定的路由与 Web API 和 MVC

c# - 如何在 Asp.Net MVC 中使用属性路由为操作生成 URL

c# - 当我选择身份验证选项时,Visual Studio 2013 没有创建数据库

jquery - 修复了具有排序功能的标题 GridView

c# - MVC3 传回带有列表的对象列表

c# - 如何在多个 Controller 类之间重用 Action Method 验证

c# - 文件上传错误 WCF WEB API(预览版 6): Cannot write more bytes to the buffer than the configured maximum buffer size: 65536