向通过Google OAuth2

时间:2015-05-01 17:16:30

标签: 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")]

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

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

1 个答案:

答案 0 :(得分: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");
     }
   }

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