jQuery地址从历史记录中删除最后一个URL

3
我们在ASP.NET MVC ajax应用程序中使用jQuery Address插件来处理深层链接和历史记录的保留。 每当你想要浏览到新页面时,只需进行以下调用:
$.address.value([some url])

我们的应用程序拥有一个非常详细的用户管理系统,允许用户定义哪些用户可以访问应用程序中的哪些功能。我们对每个操作方法进行自定义授权属性的装饰,以确定用户是否有权限使用该操作方法提供的功能。授权工作得很好,但问题是,如果用户没有权限使用给定的操作方法,则浏览器的URL仍然显示为他们点击链接时所在页面的URL。
例如,如果URL /SomeController/UnpermittedAction 表示用户不应该能够使用的操作方法,当他们单击该方法的链接时,我们执行以下操作:
$.address.value('/SomeController/UnpermittedAction')

然后,该操作返回未经授权的响应,并向用户显示他们无权使用该功能。但是,可以理解的是,用户的浏览器窗口现在显示:

somedomain.com/#/SomeController/UnpermittedAction

那本身并不是问题,问题在于如果用户转到其他页面,然后点击浏览器的返回按钮,他们会再次看到未经授权的消息,这似乎有些令人困惑,因为他们不知道为什么会看到这条消息。理想情况下,如果他们点击返回按钮,我们希望将用户返回到他们被授权使用的上一页。
我的问题是,是否有任何方法可以从浏览器历史记录和/或jQuery地址历史记录中删除未经许可的操作URL?
1个回答

0

在 JavaScript 中尝试

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

这将用新的URL替换最后一个历史记录条目


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接