2012-05-25 4 views
3

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

$.address.value([some url]) 

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

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

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

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

somedomain.com/#/SomeController/UnpermittedAction 

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

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

ответ

0

В JavaScript попробовать

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

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

Смежные вопросы