簡體   English   中英

如何檢查用戶在asp.net身份中是否擔任過多個角色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM