【发布时间】:2016-02-04 06:05:14
【问题描述】:
在我的自定义授权属性中:
public class AuthorizeUserAttribute : AuthorizeAttribute
{
public string AccessLevel { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
{
return false;
}
string privilegeLevels = string.Join("", httpContext.Session["UserRole"]);
privilegeLevels = privilegeLevels.Trim();
AccessLevel = AccessLevel.Trim();
string[] usersWithAcces = AccessLevel.Split(',');
foreach (string u in usersWithAcces)
{
if (privilegeLevels.Equals(u))
{
return true;
}
}
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new
{
controller = "UserAccount",
action = "LogIn"
})
);
}
}
}
var isAuthorized 始终为真。在我的逻辑中应该是这样的:
第一次尝试访问受保护的方法 isAuthorized 应该是假的。
用户被重定向到登录页面。
如果识别出用户的详细信息,isAuthorized 为真,并执行下一条语句。
可能我遗漏了什么,但如果有人能告诉我为什么它总是正确的,我将不胜感激。
【问题讨论】:
-
你试过用
HttpContext.User.Identity.IsAuthenticated代替base.AuthorizeCore吗?
标签: asp.net-mvc c#-4.0 authorization