[英]How to check user is in many roles in asp.net identity
嗨,我需要檢查用戶是否在其中一個角色中,並且我對發現的不同版本的代碼感到困惑。 我先告訴你我現在有什么
_manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());
var currentUser = _manager.FindById(User.Identity.GetUserId());
if (!_manager.IsInRole(currentUser.Id, "admin"))
{
}
和ApplicationUser
public class ApplicationUser : IdentityUser
{
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
}
所以我想檢查用戶是否處於角色之一。 例如admin,controbutor,superuser等。
我發現這個例子似乎不錯,但我必須在web.config中進行以下更改以使其起作用。 我不需要像現在這樣用我的代碼來做。
roleManager enabled="true"
我嘗試在UserManager.IsInRole
上進行更多研究,但我找不到很多關於它的信息。 多一點閱讀,我了解我發現的關於簡單會員資格的帖子。
當我使用身份時,我不應使用找到的代碼(指的是鏈接和接受的答案),因為這將使身份和簡單成員身份混合在一起? 特別是我指的是這一行Roles.GetRolesForUser
。 是否有類似的身份識別方法? 我認為我對不同的成員資格框架感到困惑,並且不知道什么是正確的用途。 我希望有人可以解釋我的理解。
(我仍然想要標題中提出的問題的解決方案,但我也確實需要理解=)
好吧,我找到了一種方法。 我不知道UserManager返回的User對象具有Roles屬性以及該用戶具有的角色集合。
using Microsoft.AspNet.Identity;
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());
var roles = new List<string> { "admin", "contributor" };
var currentUser = manager.FindById(User.Identity.GetUserId());
if (currentUser.Roles.Any(u => roles.Contains(u.Role.Name)))
{
}
有關Asp.net身份成員身份的更多信息,這似乎是不錯的資源。
http://www.nuget.org/packages/Microsoft.AspNet.Identity.Samples/
好吧,我想這全都取決於您的要求,即如果可以的話,請使用簡單的成員資格。 如果您正確集成了成員身份(表單身份驗證),則應真正使用User.IsInRole(“ Role”)。
從您發布的內容來看,您似乎正在使用自己的自定義用戶對象,因此在這種情況下,我將使用自定義成員資格提供程序,網上有很多此類示例,在這里我找到的第一個1 http:// www。 codeproject.com/Articles/165159/Custom-Membership-Providers
這個想法只是覆蓋所有的Membership方法,並從服務層返回您自己的用戶數據。
希望能有所幫助。 背風處
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.