gre*_*g.y 18 c# asp.net asp.net-identity
我使用这里的教程将用户数据库的主键从string更改为int ,但是我在初始化Role Manager时遇到了困难.它曾经使用过初始化
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
Run Code Online (Sandbox Code Playgroud)
如何使用新数据创建角色管理器?
更新:我正在使用MVC 5和EF 6.
DSR*_*DSR 31
你ApplicationRoleManager可能看起来像这样.因为你必须从customRole类继承而不是IdentityRole.
public class ApplicationRoleManager : RoleManager<CustomRole, int>
{
public ApplicationRoleManager(IRoleStore<CustomRole, int> roleStore)
: base(roleStore)
{
}
public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
{
return new ApplicationRoleManager(new RoleStore<CustomRole, int, CustomUserRole>(context.Get<ApplicationDbContext>()));
}
}
Run Code Online (Sandbox Code Playgroud)
然后将以下代码添加到Startup.Auth.cs类(如果当前不存在).
app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
Run Code Online (Sandbox Code Playgroud)
然后,您可以创建和管理角色.
var roleManager = HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
const string roleName = "Admin";
//Create Role Admin if it does not exist
var role = roleManager.FindByName(roleName);
if (role == null)
{
role = new CustomRole();
role.Id = 1; // this will be integer
role.Name = roleName;
var roleresult = roleManager.Create(role);
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
30857 次 |
| 最近记录: |