Адрес jQuery Удалить последний URL из истории

Мы используем подключаемый модуль jQuery Address в нашем приложении ASP.NET MVC ajax для обработки глубоких ссылок и сохранения истории. Всякий раз, когда вы хотите перейти на новую страницу, вы просто делаете следующий вызов:

$.address.value([some url])

Наше приложение имеет очень подробную систему управления пользователями, которая позволяет нашим пользователям определять, какие пользователи имеют доступ к тем или иным функциям в приложении. Мы украшаем каждый метод действия настраиваемым атрибутом Authorize, который определяет, есть ли у пользователя разрешение на использование функции, предоставляемой этим методом действия. Авторизация работает отлично, но проблема в том, что если у пользователя нет разрешения на использование данного метода действия, URL-адрес браузера по-прежнему отражает, как будто они находятся на странице ссылки, по которой они щелкнули.

Например, если URL-адрес /SomeController/UnpermittedAction представляет метод действия, который пользователь не должен иметь возможности использовать, когда он нажимает ссылку на этот метод, мы выполняем следующее:

$.address.value('/SomeController/UnpermittedAction')

Затем действие возвращает неавторизованный ответ, и мы показываем пользователю, что ему не разрешено использовать эту функцию. Но понятно, что окно браузера пользователя теперь показывает:

somedomain.com/#/SomeController/UnpermittedAction

Это само по себе не является проблемой, проблема в том, что если пользователь переходит на какую-то другую страницу, а затем нажимает кнопку «Назад» в браузере, он снова видит несанкционированное сообщение, и оно выглядит несколько запутанным, поскольку они не уверены, почему они видят это сообщение. В идеале, если они нажмут кнопку «Назад», мы хотели бы вернуть пользователя на последнюю страницу, которую ему было разрешено использовать.

Мой вопрос: есть ли способ удалить неразрешенный URL-адрес действия из истории браузера и/или истории адресов jQuery?


person Nick Olsen    schedule 25.05.2012    source источник


Ответы (1)


В javascript попробуй

        $.address.history(false);
        $.address.value(newurl);
        $.address.history(true);

Это заменит последнюю запись истории новым URL-адресом.

person Armel Larcier    schedule 19.06.2013