页面加载后调用MVC验证过滤器

时间:2014-02-05 16:15:05

标签: c# asp.net-mvc authentication

我有自己的自定义身份验证过滤器,用于确定我们的单点登录解决方案为我们的所有应用程序提供的cookie值的用户角色。然后,我们创建特定于应用程序的cookie。我遇到的问题是,似乎在页面加载已经开始后调用了身份验证过滤器。

我已将下面的属性添加到我的Controller操作中。

[Authentication(AuthenticationHelper.ADMIN)]

这是我对ActionFilterAttribute

的实现
[AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public class AuthenticationAttribute : System.Web.Mvc.ActionFilterAttribute, System.Web.Mvc.IAuthorizationFilter
{
    private readonly string _role;
    private List<string> _roles = new List<string>();

    public AuthenticationAttribute()
    {
    }

    public AuthenticationAttribute(string role)
    {
        _roles.Add(role);
    }
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        if (filterContext == null)
        {
            throw new ArgumentNullException("filterContext is null");
        }

        AuthenticationHelper user = new AuthenticationHelper(filterContext.HttpContext.Request);
        var userRole = user.GetRole();

        if (userRole == null || (userRole != null && !_roles.Contains(userRole))) 
        {
            filterContext.Result = new RedirectResult("/Home/NotAuthorized");
        }
    }
    public string Role
    {
        get { return _role; }
    }
}

无论如何在页面加载开始之前执行此操作,还是在页面加载开始之前还有其他方法来创建cookie,以便应用程序可以读取它们?

0 个答案:

没有答案