使用mvc进行未经身份验证/注销时获取路由?

时间:2010-01-21 14:57:17

标签: asp.net asp.net-mvc

我有这段代码:

public class Authenticate : ActionFilterAttribute
{

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            filterContext.HttpContext.Response.Redirect("/");   
        }
    } 
}

我想知道是否可以将其重定向到视图for action =“Login”controller =“AdminLogin”?如何将一些消息传递给登录视图,告知“您需要登录才能访问”或类似的消息?

/ M

1 个答案:

答案 0 :(得分:0)

以下是我解决重定向部分的方法:

public class Authenticate : ActionFilterAttribute
{

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            RedirectToRoute(filterContext,
                new
                {
                    controller = "AdminLogin",
                    action = "AdminLogin"
                });
        }
    }



    private void RedirectToRoute(ActionExecutingContext context, object routeValues)
    {
        var rc = new RequestContext(context.HttpContext, context.RouteData);

        string url = RouteTable.Routes.GetVirtualPath(rc,
            new RouteValueDictionary(routeValues)).VirtualPath;

        context.HttpContext.Response.Redirect(url, true);
    }

}

不确定它是否是最佳的,但似乎正确地完成了工作