示例
1、新建Enum UserTypeOptions.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ContactsManager.Core.Enums
{
public enum UserTypeOptions
{
User,
Admin
}
}
2、Register页面添加两个角色Radio
@*User Type*@
<div class="form-field flex">
<div class="w-25">
<label asp-for="UserType" class="form-label pt">User Type</label>
</div>
<div class="flex-1">
<input type="radio" id="User" asp-for="UserType" value="User" checked/>
<label for="User">User</label>
<input type="radio" id="Admin" asp-for="UserType" value="Admin" />
<label for="Admin">Admin</label>
</div>
</div>
3、AccountController.cs中更新Register方法
if (result.Succeeded)
{
//Check status of radio button
if (registerDTO.UserType == UserTypeOptions.User)
{
//Create 'User' Role
if (await _roleManager.FindByNameAsync(UserTypeOptions.User.ToString())
is null)
{
ApplicationRole applicationRole = new ApplicationRole()
{
Name = UserTypeOptions.User.ToString()
};
await _roleManager.CreateAsync(applicationRole);
}
//Add the new user into 'User' role
await
_userManager.AddToRoleAsync(applicationUser,UserTypeOptions.User.ToString());
}
else if (registerDTO.UserType == UserTypeOptions.Admin)
{
//Create 'Admin' Role
if (await _roleManager.FindByNameAsync(UserTypeOptions.Admin.ToString())
is null)
{
ApplicationRole applicationRole = new ApplicationRole()
{
Name = UserTypeOptions.Admin.ToString()
};
await _roleManager.CreateAsync(applicationRole);
}
//Add the new user into 'Admin' role
await _userManager.AddToRoleAsync(applicationUser,
UserTypeOptions.Admin.ToString());
}
//Sign in
await _signInManager.SignInAsync(applicationUser, false);
return RedirectToAction(nameof(PersonsController.Index), "Persons");
}
运行程序并通过数据库查看,可以成功添加角色并关联用户。
Gitee获取源码: