1

只是好奇什么是最好的方法?

习惯使用

if (User.IsInRole("Administrator"))

使用我的旧程序,

为 MVC4-VS2012 项目使用新的剑道模板(对我来说是新的)它创建了没有简单成员资格的一切,所以我在一些 youtube 视频和文档的帮助下编写了自己的登录系统。

它非常灵活且有效,只是好奇我如何检查用户是否在 Roll Via A 视图中(类似if (User.IsInRole("Administrator")))。或者最好的方法(可能在控制器中)

4

1 回答 1

3

您可以继续使用User.IsInRole(""),您只需设置HttpContext.User具有角色列表的正确主体。

您可以创建自己的授权属性来处理此问题:

var websiteRoles = userRepo.GetRoles(HttpContext.User.Identity.Name);

var identity = filterContext.HttpContext.User.Identity as FormsIdentity;
filterContext.HttpContext.User = new System.Security.Principal.GenericPrincipal(identity, websiteRoles.ToArray());

跟进:

您的 GetRoles() 方法可以以任何您喜欢的方式实现,您只需要拥有用户所属角色的列表。您将使用此列表创建 Principal 对象以将 User 设置为。

使用这种方法将允许您使用 User.IsInRole()

于 2013-08-13T20:29:05.877 回答