我们正在使用ASP.NET MVC ajax应用程序中的jQuery Address插件来处理深层链接和历史保存。每当您想要导航到新页面时,只需拨打以下电话:
$.address.value([some url])
我们的应用程序具有非常详细的用户管理系统,允许我们的用户定义哪些用户可以访问应用程序中的哪些功能。我们使用自定义的Authorize属性来装饰每个操作方法,该属性确定用户是否有权使用该操作方法提供的功能。授权很有效,但问题是如果用户没有权限使用给定的操作方法,浏览器网址仍然会反映出他们在他们点击的链接的页面上。
例如,如果url / SomeController / UnpermittedAction表示用户不应该使用的操作方法,当他们单击指向该方法的链接时,我们执行以下
$.address.value('/SomeController/UnpermittedAction')
然后,该操作返回一个未授权的响应,我们向用户显示他们不允许使用该功能。但是,可以理解的是,用户的浏览器窗口现在显示:
somedomain.com/#/SomeController/UnpermittedAction
这本身并不是一个真正的问题,问题是,如果用户转到其他页面,然后点击后面的浏览器按钮,他们会再次看到未经授权的消息,因为它们不是确定他们为什么会看到这个消息。理想情况下,如果他们点击后退按钮,我们会希望将用户返回到他们有权使用的最后一页。
我的问题是,有没有办法从浏览器历史记录和/或jQuery地址历史记录中删除未经许可的操作URL?
答案 0 :(得分:0)
在javascript尝试
$.address.history(false);
$.address.value(newurl);
$.address.history(true);
这将使用新网址
替换最后一个历史记录条目