2012-05-25 51 views
3

我們利用ASP.NET MVC AJAX應用程序中的jQuery地址插件來處理深層鏈接和歷史記錄保存。每當你想瀏覽到一個新的頁面,你只需做以下電話:jQuery地址從歷史記錄中刪除最後一個Url

$.address.value([some url]) 

我們的應用程序有一個非常詳細的用戶管理系統,使我們的用戶來定義哪些用戶可以訪問哪些功能的應用程序。我們使用自定義的Authorize屬性來修飾每個操作方法,以確定用戶是否有權使用該操作方法提供的功能。授權很好,但問題是,如果用戶沒有權限使用給定的操作方法,那麼瀏覽器url仍然會反映在他們所點擊的鏈接的頁面上。

例如,如果該URL/SomeController/UnpermittedAction表示用戶應該能夠利用,當他們點擊鏈接到該方法的操作方法,我們執行以下的

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

然後,該操作返回未經授權的響應,並向用戶顯示他們不被允許使用該功能。但是,可以理解,用戶的瀏覽器窗口現在顯示:

somedomain.com/#/SomeController/UnpermittedAction 

這本身是不是一個真正的問題,問題是,如果用戶轉到其他頁面,然後點擊返回瀏覽器按鈕,它們再次看到未經授權的消息,看起來有些困惑,因爲他們不確定他們爲什麼看到這條消息。理想情況下,如果他們點擊後退按鈕,我們希望將用戶返回到他們有權使用的最後一頁。

我的問題是,有什麼辦法從瀏覽器歷史記錄和/或jQuery地址歷史中刪除未經許可的動作url?

回答

0

在javascript中嘗試

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

這將替換爲新的URL的最後歷史條目