Мы используем плагин 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?