Trong Migrations lớp cấu hình, có phương pháp Seed, và có vẻ như:vai trò ASP.net MVC + ASP.net nhận dạng Seeding và người dùng
protected override void Seed(DatabaseContext context)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var userManager = new UserManager<User>(new UserStore<User>(context));
if (!roleManager.RoleExists("Administrator"))
{
roleManager.Create(new IdentityRole("Administrator"));
}
var user = new User {UserName = "someUserName"};
if (userManager.FindByName("someUserName") == null)
{
var result = userManager.Create(user, "password");
if (result.Succeeded)
{
userManager.AddToRole(user.Id, "Administrator");
}
}
}
Và sau đó trong PM console tôi đã chạy cập nhật cơ sở dữ liệu và nó đã thành công trong cơ sở dữ liệu, và trong bảng AspNetUserRoles tôi có thể thấy rằng vai trò người dùng someUserName và Administrator được kết nối.
Nhưng khi tôi đặt thuộc tính [Authorize(Roles = "Administrator")]
trên bộ điều khiển Tôi đã chuyển hướng để đăng nhập vào trang như nếu người dùng của tôi không được vai trò đó, vì vậy tôi đã thêm dòng trong bộ điều khiển của tôi:
var x = _userManager.IsInRole(_userManager.FindByName("someUserName").Id, "Administrator");
Và x là sai. Tại sao chuyện này đang xảy ra ? Và làm thế nào tôi có thể sửa nó? Và nếu đây không phải là cách thích hợp để tạo cơ sở dữ liệu, thì đó là gì?