【发布时间】:2010-06-28 21:26:48
【问题描述】:
在我的 AccountController 中,我有这样的代码:
ControllerContext.HttpContext.User = new MyAppUserPrincipal(user);
当我在调试器中逐步执行此操作时,我可以看到 ControllerContext.HttpContext.User.IsInRole("Admin") 为真。
接下来,我有一个受自定义属性保护的 HomeController:
[AuthorizeMyApp(Roles = "Admin")]
在属性的定义中,我有这样的:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var principal = filterContext.HttpContext.User ;
if (! principal.IsInRole(_roles) )
等等
登录并尝试返回主页后,奇怪的是:
principal.Identity.Name 具有预期的名称,并且 IsAuthenticate 为真;然而 a) principal.IsInRole("Admin") 为假 b) (principal As MyAppUserPrincipal) 为空
我在这里做错了吗? (使用 MVC2)
【问题讨论】:
标签: c# asp.net-mvc-2 authorization