Asp.net mvc 如何创建重定向的自定义属性?

Asp.net mvc 如何创建重定向的自定义属性?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我想创建一个自定义属性 检查用户登录。 如果记录:重定向到位置1。 否则:重定向到位置2。 检查用户激活。 如果记录且未激活:重定向到位置3 不知道怎么做。我的意思是,如何访问属性中的用户信息以进行检查?是,但我需要检查用户是否处于活动状态。好像!user.active。。。如何治疗?active是我模型中的一个属性。将其他检查也放在if子句中。是的,但我不知道如何在那里访问它。这才是真正的问题。在ASP.NETMVC中没有用户处于活动状态的概念。这只存在于您特定的上下文和您正在使用的框架集合中

我想创建一个自定义属性

检查用户登录。 如果记录:重定向到位置1。 否则:重定向到位置2。 检查用户激活。 如果记录且未激活:重定向到位置3
不知道怎么做。我的意思是,如何访问属性中的用户信息以进行检查?

是,但我需要检查用户是否处于活动状态。好像!user.active。。。如何治疗?active是我模型中的一个属性。将其他检查也放在if子句中。是的,但我不知道如何在那里访问它。这才是真正的问题。在ASP.NETMVC中没有用户处于活动状态的概念。这只存在于您特定的上下文和您正在使用的框架集合中。正如我在回答中已经解释的,您可以使用filterContext.HttpContext.User.Identity.Name属性获取当前经过身份验证的用户名。一旦你得到了这个值,你就可以查询你的基础数据提供商或会员服务,或者你正在使用的任何东西,来决定这个用户是否处于活动状态,这在你的上下文中意味着什么。是的,你肯定问错了问题。祝下一个好运。是的,但我需要检查用户是否处于活动状态。好像!user.active。。。如何治疗?active是我模型中的一个属性。将其他检查也放在if子句中。是的,但我不知道如何在那里访问它。这才是真正的问题。在ASP.NETMVC中没有用户处于活动状态的概念。这只存在于您特定的上下文和您正在使用的框架集合中。正如我在回答中已经解释的,您可以使用filterContext.HttpContext.User.Identity.Name属性获取当前经过身份验证的用户名。一旦你得到了这个值,你就可以查询你的基础数据提供商或会员服务,或者你正在使用的任何东西,来决定这个用户是否处于活动状态,这在你的上下文中意味着什么。是的,你肯定问错了问题。祝你下一个好运。
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);
        }
    }
}