MVC 3 Как вручную создать URL перенаправления? - PullRequest
0 голосов
/ 25 февраля 2012

Я проверяю с помощью функции $.post, аутентифицирован ли пользователь. Если нет, я хочу перенаправить его на страницу входа и также указать текущий URL в параметре ?RedirectUrl= (так же, как это делает FormsAuthentication.RedirectToLoginPage()). Жарко это делать? Через Jquery или какой-то метод .net?

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Вы можете создать свой собственный атрибут AuthorizeUser и переопределить HandleUnauthorizeUser (..).

Затем вы можете проверить, является ли запрос запросом ajax, а затем вернуть jsonresult с правильным значением, которое может быть прочитано JavaScript в представлении.

Попробуйте следующий код. (Я еще не проверял)

public class CustomAuthorizeUserAttribute:AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAjaxRequest())
        {
            var result = new JsonResult();
            result.Data = new
            {
                responseCode = 401,
                loginUrl = FormsAuthentication.LoginUrl
            };
            filterContext.Result = result;
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}

используйте его вместо атрибута [Authorize] в действиях контроллера.

1 голос
/ 25 февраля 2012

если нет, вы можете вернуть RedirectResult, если это не работает для вас, я бы рекомендовал создать URL-адрес перенаправления на стороне сервера и передать его в jQuery через JSON

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