Asp.net mvc 如何创建重定向的自定义属性?
我想创建一个自定义属性 检查用户登录。 如果记录:重定向到位置1。 否则:重定向到位置2。 检查用户激活。 如果记录且未激活:重定向到位置3Asp.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中没有用户处于活动状态的概念。这只存在于您特定的上下文和您正在使用的框架集合中
不知道怎么做。我的意思是,如何访问属性中的用户信息以进行检查?是,但我需要检查用户是否处于活动状态。好像!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);
}
}
}