如何创建重定向的Custom AuthorizeAttribute?

时间:2013-06-14 20:08:41

标签: asp.net-mvc asp.net-mvc-4

我想创建一个

的自定义AuthorizeAttribute
  1. 检查用户登录信息。
    1. 如果已记录:重定向到place1。
    2. else:重定向到place2。
  2. 检查用户是否激活。
    1. 如果记录&&未激活:重定向到place3
  3. 不知道该怎么做。我的意思是,如何访问属性中的用户信息以进行检查?

1 个答案:

答案 0 :(得分:5)

public class MyAuthorizeAttribute : FilterAttribute, IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAuthenticated)
        {
            // the user is authenticated => redirect to place1
            // you could get the current user from the 
            // filterContext.HttpContext.User property and query your provider
            // to verify if he is activated (whatever that means in your specific context)

            var routeValues = new RouteValueDictionary(new
            {
                contoller = "foo",
                action = "bar",
            });
            filterContext.Result = new RedirectToRouteResult(routeValues);
        }
        else
        {
            // the user is not authenticated => redirect to place2
            var routeValues = new RouteValueDictionary(new
            {
                contoller = "bazingaS",
                action = "theBaz",
            });
            filterContext.Result = new RedirectToRouteResult(routeValues);
        }
    }
}