有什麼方法可以獲得用戶在我的控制器中顯式角色?這假定使用ASP.NET成員資格和角色提供者。 「IsInRole」不起作用 - 我需要真正獲得他們所在角色的名稱。獲取當前用戶的角色
回答
您可以從GetRoles方法中獲得角色列表。 (從鏈接)
string[] rolesArray;
public void Page_Load()
{
RolePrincipal r = (RolePrincipal)User;
rolesArray = r.GetRoles();
...//extra code
}
用戶可以在多個角色,所以你不能得到一個角色用戶是在,但你可以很容易地得到角色的的列表用戶在
可以使用Roles
類型來獲得當前登錄的用戶是在角色列表:
public ActionResult ShowUserRoles() {
string[] roleNames = Roles.GetRolesForUser();
return View(roleNames);
}
或者,如果你想獲得角色的任意用戶,您可以PA當您撥打Roles.GetRolesForUser()
時,請在用戶名中輸入ss。
以及如何獲得自定義用戶特定的數據,如DOB? – xameeramir 2015-05-13 12:11:02
@zameeramir聽起來像是一個很好的單獨問題,可以在StackOverflow上詢問。 – Eilon 2015-05-13 15:58:47
它在這裏:http://stackoverflow.com/questions/30216915/how-to-get-user-profile-data-from-asp-net-mvc-custom-identityuser-model/30217188#30217188 – xameeramir 2015-05-13 16:05:02
您可以使用Roles.GetRolesForUser()
獲取當前用戶的角色。
要檢查如果用戶屬於這裏的角色是我做過什麼:
Roles.GetRolesForUser().Contains("Administrator")
你也可以通過執行'User.IsInRole(「RoleName」)來檢查用戶是否在角色中。 – 2013-05-01 07:19:44
Scotty.NET的答案(在對此答案的評論中)似乎是一種更好(更快)的方式來檢查用戶是否屬於對我有一定的作用。 – VoidKing 2013-12-10 19:40:20
Simplemembership在MVC4:
獲取用戶的角色的
var role = System.Web.Security.Roles.GetRolesForUser().Single();
要檢查用戶屬於某個角色 -
if (User.IsInRole("External"))
我不知道我是否錯過了一些奇怪的設置或設置,但我無法獲得User.IsInRole
或Roles.GetRolesForUser()
工作。我只是得到一個異常(我認爲空引用),並且應用程序剛剛停止。儘管我已經將RoleManager配置爲OwinContext和Create方法,就像Microsoft的Identity Sample項目中一樣,並且在web.config中啓用了角色管理器。 我解決了這個起初使用另一種方法,像這樣(db是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();
這可能不是最優化的方式可能被改變爲simplier形式,但它爲我工作和可能不需要像其他方法那麼多的設置/依賴關係。 第二種方法是這樣(添加到您的控制器類):
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;
}
}
內,您的控制器,你現在可以做如:
var UserID = User.Identity.GetUserId();
var RolesForUser = await UserManager.GetRolesAsync(UserID);
我使用ASP.NET MVC 5應用程序只是爲了清楚。本例中沒有使用RoleManager,但它可以用於創建,查找,更新等角色。使用此方法可以使用await進行異步調用,以防止對您的應用程序有益。
我使用此代碼
((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. Moodle - 獲取當前用戶角色
- 2. 獲取當前用戶角色下的所有角色
- 3. ASP.net MVC - 獲取當前記錄的用戶角色
- 4. 如何獲取當前用戶的所有角色?
- 5. Zend_Navigation:獲取當前用戶/角色可訪問的頁面
- 6. Spring Roo獲取當前登錄用戶的角色
- 7. 如何通過Spring Security獲取當前用戶的角色
- 8. Symfony:如何獲取FormType或security.authorization_checker中的當前用戶角色
- 9. 如何在wordpress中獲取當前登錄用戶的角色?
- 10. 在MVC中獲取當前登錄用戶的角色6
- 11. 如何從spring安全中獲取當前用戶角色3.1
- 12. MVC 5獲取當前用戶角色名稱
- 13. 如何根據當前用戶角色獲取權限
- 14. 獲取用戶角色
- 15. 如何在Drupal 7中獲取當前登錄用戶的角色?
- 16. 獲取用戶當前apprequests
- 17. Svn獲取當前用戶
- 18. 獲取當前用戶
- 19. JHipster獲取當前用戶
- 20. PHP,獲取當前用戶
- 21. 獲取當前用戶名
- 22. 獲取當前用戶名
- 23. RotateAnimation獲取當前角度
- 24. .net mvc3獲取用戶的角色
- 25. Active Directory:獲取用戶的角色
- 26. WordPress的獲取用戶角色與PHP
- 27. 獲取每個角色的用戶數
- 28. 如何獲取角色中的所有用戶,包括角色中的角色?
- 29. 獲取當前顏色
- 30. 使用firebase獲取當前用戶角度?
對於其他人誰碰上這一點,如果你對角色管理器遇到錯誤,這裏沒有被啓用,浮現在你的web配置,發現啓用roleManager元素,並將=」真「作爲屬性。 – MisterJames 2012-05-30 21:10:08