Có cách nào để nhận vai trò rõ ràng mà người dùng thuộc về bộ điều khiển của tôi không? Điều này giả định sử dụng ASP.NET Membership và Role Providers. "IsInRole" không hoạt động - tôi cần thực sự có được tên của vai trò của họ.nhận vai trò của người dùng hiện tại
Trả lời
Bạn có thể nhận danh sách Vai trò từ phương pháp GetRoles. (Từ liên kết)
string[] rolesArray;
public void Page_Load()
{
RolePrincipal r = (RolePrincipal)User;
rolesArray = r.GetRoles();
...//extra code
}
Một người sử dụng có thể ở nhiều hơn một vai trò, do đó bạn không thể có được vai trò một mà người dùng đang ở trong, nhưng bạn có thể dễ dàng nhận được các danh sách vai trò một sử dụng là trong
bạn có thể sử dụng các loại Roles
để có được danh sách các vai trò mà hiện đang đăng nhập sử dụng trong:.
public ActionResult ShowUserRoles() {
string[] roleNames = Roles.GetRolesForUser();
return View(roleNames);
}
Hoặc nếu bạn muốn nhận được vai trò của một thành viên tùy ý bạn có thể pa ss trong tên người dùng khi bạn gọi Roles.GetRolesForUser()
.
Và cách lấy dữ liệu cụ thể của người dùng tùy chỉnh như DOB? – xameeramir
@zameeramir có vẻ giống như một câu hỏi riêng biệt tốt để hỏi về StackOverflow. – Eilon
tại đây là: http://stackoverflow.com/questions/30216915/how-to-get-user-profile-data-from-asp-net-mvc-custom-identityuser-model/30217188#30217188 – xameeramir
Bạn có thể nhận vai trò của người dùng hiện tại bằng Roles.GetRolesForUser()
.
Để kiểm tra xem một người dùng thuộc về một vai trò ở đây là những gì tôi đã làm:
Roles.GetRolesForUser().Contains("Administrator")
Bạn cũng có thể kiểm tra xem người dùng có trong vai trò bằng cách thực hiện 'User.IsInRole (" RoleName ")' –
câu trả lời của Scotty.NET (trong nhận xét cho câu trả lời này) có vẻ là cách tốt hơn (nhanh hơn) để kiểm tra xem người dùng có thuộc về với một vai trò nhất định đối với tôi. – VoidKing
Simplemembership trong MVC4:
Lấy của role-
var role = System.Web.Security.Roles.GetRolesForUser().Single();
Để kiểm tra xem tài khoản người dùng thuộc một vai trò nhất định-
if (User.IsInRole("External"))
Tôi không biết nếu tôi thiếu cài đặt hoặc thiết lập lạ, nhưng tôi không thể nhận được ví dụ User.IsInRole
hoặc Roles.GetRolesForUser()
để hoạt động. Tôi chỉ nhận được một ngoại lệ (tôi nghĩ rằng tham chiếu null), và các ứng dụng chỉ dừng lại. Mặc dù tôi đã cấu hình một RoleManager cho OwinContext và một phương thức Create, ví dụ như trong dự án Identity Sample của Microsoft, cũng như cho phép Role Manager trong web.config. tôi giải quyết này lúc đầu sử dụng cách tiếp cận khác, như thế này (db là ApplicationDbContext):
var UserID = User.Identity.GetUserId();
var userRoles = db.Roles.Include(r => r.Users).ToList();
var userRoleNames = (from r in userRoles
from u in r.Users
where u.UserId == UserID
select r.Name).ToList();
Điều này có thể không phải là cách tối ưu nhất và có thể có thể được thay đổi để một hình thức đơn giản hơn nhưng nó làm việc cho tôi và có thể không đòi hỏi nhiều thiết lập/phụ thuộc như các cách tiếp cận khác. Cách tiếp cận thứ hai được này (thêm này đến lớp điều khiển của bạn):
private ApplicationDbContext db = new ApplicationDbContext();
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
set
{
_userManager = value;
}
}
private ApplicationRoleManager _roleManager;
public ApplicationRoleManager RoleManager
{
get
{
return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
}
private set
{
_roleManager = value;
}
}
Bên trong điều khiển của bạn bây giờ bạn có thể làm ví dụ:
var UserID = User.Identity.GetUserId();
var RolesForUser = await UserManager.GetRolesAsync(UserID);
Tôi đang sử dụng ASP.NET MVC 5 ứng dụng chỉ để rõ ràng. Trình quản lý vai trò không được sử dụng trong ví dụ này nhưng có thể được sử dụng để tạo, tìm kiếm, cập nhật vai trò v.v. Sử dụng phương pháp này cho phép các cuộc gọi không đồng bộ sử dụng đang chờ, trong trường hợp đó là một lợi ích cho ứng dụng của bạn.
tôi Sử dụng mã này
((ClaimsIdentity)User.Identity).FindAll(ClaimTypes.Role).ToList()
.OrderBy(x => x.Value == "admin" ? 1
: x.Value == "Salesperson" ? 2
: x.Value == "User" ? 3 : 4).First().Value
- 1. Cách truy vấn vai trò của người dùng hiện tại
- 2. Magento: nhận vai trò và người dùng
- 3. Cách nhận vai trò cho người dùng hiện tại với Spring Security
- 4. Vai trò/nhóm Symfony2 - is_granted không phát hiện vai trò người dùng có
- 5. Cách nhận vai trò của người dùng hiện đang đăng nhập trong Drupal 7?
- 6. Cách nhận vai trò người dùng trong JSP/Servlet
- 7. Cách kiểm tra vai trò của người dùng hiện tại là
- 8. Làm cách nào để biết vai trò của người dùng hiện tại trong WordPress?
- 9. ASP.net là người dùng trong vai trò
- 10. Lấy danh sách người dùng và vai trò của họ
- 11. Chỉ định vai trò gán vai trò cho người dùng trong MVC 4 qua hộp kiểm
- 12. Vai trò, lược đồ SQL Server, người dùng
- 13. Ủy quyền và vai trò người dùng trong Oracle Apex?
- 14. T-SQL Cách cấp vai trò cho người dùng
- 15. Gán Vai trò cho Người dùng Ứng dụng
- 16. Thêm vai trò cho người dùng được tạo trong Web.config
- 17. Nhiều vai trò người dùng trong Ruby on Rails
- 18. Xây dựng Menu trang ASP.NET MVC chính Động, Dựa trên "Vai trò" của người dùng hiện tại
- 19. Sitecore CMS Tạo người dùng và vai trò mới
- 20. Tên nào cho vai trò người dùng trang web chuẩn?
- 21. Kiểm tra xem người dùng cụ thể có vai trò
- 22. Cách tạo vai trò người dùng tùy chỉnh trong Wordpress
- 23. Magento: Cách lấy vai trò người dùng từ id người dùng
- 24. Nhận tên người dùng hiện tại
- 25. Svn nhận người dùng hiện tại
- 26. Tại sao PostgreSQL hợp nhất người dùng và nhóm thành các vai trò?
- 27. Người dùng có vai trò là "quản trị" nhưng [Ủy quyền (Vai trò = "quản trị")] sẽ không xác thực
- 28. Vai trò người dùng - tại sao không lưu trữ trong phiên?
- 29. cách chỉ định vai trò cho người dùng trong khi tạo tài khoản của họ
- 30. Làm cách nào để có danh sách vai trò cho người dùng hiện đang đăng nhập
Đối với những người khác chạy vào trong này, nếu bạn chạy vào một lỗi ở đây về vai trò quản lý không được kích hoạt, pop vào cấu hình web của bạn, tìm ra nguyên tố roleManager và set enabled =" đúng "như một thuộc tính. – MisterJames