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