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

Pit*_*DBA 5 asp.net asp.net-mvc google-oauth asp.net-mvc-5 asp.net-identity

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

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

[Authorize(Roles="MyCustomRole")]
Run Code Online (Sandbox Code Playgroud)

无法访问.应用程序将经过身份验证的用户转发到Login控制器.

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

Bel*_*ash 0

不确定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");
     }
   }
Run Code Online (Sandbox Code Playgroud)

要测试这一点,您可能需要创建一个空项目,一个空的!然后在 newget 包中运行这个 nuget PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre 然后你可以将我的操作代码放入控制器UsersAdmin