我想要的就是从实体框架(使用代码优先的方法)给用户权限,就像DDL,DML命令给某个用户一样。
发布于 2020-03-16 14:03:15
以下步骤将帮助您创建用户、创建角色、将用户分配到角色以及根据角色限制其访问权限。
Enable-MigrationsConfiguration.csprotected override void Seed(ISPRC.Models.ApplicationDbContext context)
{
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
userManager.UserValidator = new UserValidator<ApplicationUser>(userManager)
{
AllowOnlyAlphanumericUserNames = false,
};
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
// Create a User Role
if (!roleManager.RoleExists("Admin"))
{
var role = new IdentityRole();
role.Name = "Admin";
roleManager.Create(role);
}
if (!context.Users.Any(u => u.UserName == "admin@mail.com"))
{
var user = new ApplicationUser
{
UserName = "admin@mail.com",
Email = "admin@mail.com",
EmailConfirmed = true,
};
// Create User
userManager.Create(user, "Password@777");
// Add User to Admin Role
userManager.AddToRole(user.Id, "Admin");
}
}要限制某些角色访问您的控制器或操作,请添加[Authorize]或[Authorize(Roles="Admin,User")]
下面的控制器将只允许具有管理员角色的登录用户。如果他们的角色不符合要求,他们将被自动重定向到登录页面。
[Authorize(Roles = "Admin")]
public class AdminController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
public ActionResult Accounts()
{
return View();
}
}发布于 2020-03-14 22:15:35
您可以使用Custom Migration Operations,也可以切换到数据库优先的工作流,使用另一个工具管理数据库模式,并定期将该模式reverse engineer到基于代码的模型中。
https://stackoverflow.com/questions/60681474
复制相似问题