Проблема с загрузкой страницы LogOn внутри div при перенаправлении членства - PullRequest
2 голосов
/ 16 августа 2011

Я использую аутентификацию членства в веб-приложении MVC3. Я интенсивно использую jQuery и загружаю частичные представления внутри блоков и вкладок. Моя проблема в том, что когда пользователь был неактивен и вышел из системы, а затем он пытается вызвать Action внутри контроллера, который загружает частичное представление внутри div или вкладки, вся страница с представлением LogOn загружается внутри div, разрушая мой расположение.

Перенаправление выполняется правильно и является желаемым эффектом, однако я хотел бы, чтобы страница входа в систему загружалась в окне, а не в div в текущем представлении. Кто-нибудь знает, как этого добиться?

Понятно, что я хочу и что не так?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 августа 2011

Только что исправил мою проблему с небольшим скриптом. Это не лучшее решение, и я не совсем доволен им, но, по крайней мере, оно решает мою проблему очень простым способом.

Если кому-то интересно, вот что я сделал, я добавил этот фрагмент кода в начале своей страницы входа в систему:

<script type="text/javascript">

    function funcName() {
        var str = window.location.href;
        var num = loc.indexOf('@Url.Action("Action", "Controller", new { area = "" })');
        if (num < 0) {
            window.location = '@Url.Action("Action", "Controller", new { area = "" })';
        }
    }

    relocate();
</script>

Таким образом, если страница входа в систему загружается внутри некоторого элемента div, а не в окне, она перемещается на фактическую страницу входа.

0 голосов
/ 16 августа 2011

Сочетание аутентифицированных вызовов и Ajax всегда является проблемой, потому что Ajax неправильно обрабатывает перенаправление.

Я предпочитаю не атрибут Authorize в действиях контроллера, вызываемого Ajax, но проверять, проходит ли аутентификация пользователя внутри метода и возвращает определенный HTTP-ответ (например, HTTP403 Unauthorized). Используя обработчик ошибок в своем клиентском скрипте, вы можете проверить этот ответ и перенаправить на страницу входа, установив window.location.

...