Получить маршрут при неаутентификации / выходе из системы с помощью mvc? - PullRequest
0 голосов
/ 21 января 2010

У меня есть этот кусок кода:

public class Authenticate : ActionFilterAttribute
{

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

Мне было интересно, можно ли сделать так, чтобы оно перенаправлялось в представление для action = "Login" controller = "AdminLogin"? И как я могу передать какое-то сообщение в представление входа в систему, которое говорит «вам необходимо войти в систему, чтобы получить доступ к этому» или подобное?

/ M

1 Ответ

0 голосов
/ 21 января 2010

Вот как я решил редирект-часть:

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);
    }

}

Не уверен, что это оптимально, но, кажется, правильно выполняет работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...