我们已经实施了Google OAuth2,并在ASPNetUsers表中创建了用户。这很好用,我们可以通过User.Identity.GetUserName()看到经过身份验证的用户。
如果我们将此用户添加到某个角色,请说明" MyCustomRole",通过AspNetRoles和AspNetUserRoles表,使用以下方法保护的任何方法:
[Authorize(Roles="MyCustomRole")]
无法访问。应用程序将经过身份验证的用户转发到Login控制器。
将这些经过外部验证的用户添加到角色的正确机制是什么,让[授权(角色="")]属性可以访问这些角色?
答案 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
控制器