gpt4 book ai didi

c# - 具有身份的 ASP.NET Core 中的自定义 RoleProvider?

转载 作者:行者123 更新时间:2023-11-30 12:57:13 26 4
gpt4 key购买 nike

在过去的 MVC 版本中我能够做到

<roleManager enabled="true" defaultProvider="...." ...

在 web.config 中获取自定义角色提供程序,但情况似乎不再如此。

基本上我想做的是:

  1. 用户登录。
  2. 成功后,从外部来源为用户获取角色。
  3. 将角色应用于要在代码中使用的用户。
  4. 将用户角色与自定义 RoleProvider 中的角色匹配

如何在 ASP.NET Core 中执行此操作?

最佳答案

如果您使用简单的基于 cookie 的身份验证而不是身份框架,您可以将您的角色添加为声明,它们将由 User.IsInRole(...) 获取,[Authorize(Roles = "...")]

private async Task SignIn(string username)
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, username)
};

// TODO: get roles from external source
claims.Add(new Claim(ClaimTypes.Role, "Admin"));
claims.Add(new Claim(ClaimTypes.Role, "Moderator"));

var identity = new ClaimsIdentity(
claims,
CookieAuthenticationDefaults.AuthenticationScheme,
ClaimTypes.Name,
ClaimTypes.Role
);

await HttpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(identity),
new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTime.UtcNow.AddMonths(1)
}
);
}

关于c# - 具有身份的 ASP.NET Core 中的自定义 RoleProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com