Entity Framework Core
实体框架数据访问技术的轻量型、可扩展、开源、跨平台版本。
50 个问题
嗨,朋友们!!我想知道当用户注册到我的网站时,我是否可以将他们分配给具有最低权限的默认角色,直到我选择将他们添加到另一个角色?只是想知道Startup.cs是否有某种配置来处理这个问题。我看过一些教程,其中允许用户在注册时选择角色。这对我来说没有意义,允许用户将自己分配给管理员角色。同样,我想把他们放在一个默认的角色中。我正在将 Identity Core 用于我的数据存储。谢谢!!!
Note:此问题总结整理于:Assign user to role during Registration
嗨,
我想知道当用户注册到我的网站时,我是否可以将他们分配给具有最低权限的默认角色,直到我选择将他们添加到另一个角色?只是想知道Startup.cs是否有某种配置来处理这个问题。
据我所知,没有这种方法可以在Startup.cs配置中设置默认角色。
要在注册用户时设置默认角色(使用 Asp.net 核心身份),我建议您可以参考以下步骤:
AddRoles
复制public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddControllersWithViews();
services.AddRazorPages();
}
[AllowAnonymous]
public class RegisterModel : PageModel
{
private readonly SignInManager<IdentityUser> _signInManager;
private readonly UserManager<IdentityUser> _userManager;
private readonly ILogger<RegisterModel> _logger;
private readonly IEmailSender _emailSender;
private readonly RoleManager<IdentityRole> _roleManager;
public RegisterModel(
UserManager<IdentityUser> userManager,
SignInManager<IdentityUser> signInManager,
ILogger<RegisterModel> logger,
RoleManager<IdentityRole> roleManager,
IEmailSender emailSender)
{
_userManager = userManager;
_signInManager = signInManager;
_logger = logger;
_roleManager = roleManager;
_emailSender = emailSender;
}
``` ```xml
然后,在 OnPostAsync 方法中,在用户创建成功后,我们可以使用 RoleManager 查找默认角色,然后使用 UserManager 将用户添加到 Role。代码如下:复制
powershell
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl ??= Url.Content("~/");
ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
if (ModelState.IsValid)
{
var user = new IdentityUser { UserName = Input.Email, Email = Input.Email };
var result = await _userManager.CreateAsync(user, Input.Password);
if (result.Succeeded)
{
var defaultrole = _roleManager.FindByNameAsync("Default").Result;
if (defaultrole != null)
{
IdentityResult roleresult = await _userManager.AddToRoleAsync(user, defaultrole.Name);
}
最后,如果我们注册一个新用户,结果如下:
NET Core SDK 附带一个带有“标识”选项的 Angular 模板。
dotnet new angular -o <output_directory_name> -au Individual
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。