嗨,我需要检查用户是否在其中一个角色中,并且我对发现的不同版本的代码感到困惑。我先告诉你我现在有什么
_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/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句