3

ASP.NET MVC ajax アプリケーションで jQuery Address プラグインを利用して、ディープ リンクと履歴の保存を処理しています。新しいページに移動したいときはいつでも、次の呼び出しを行うだけです。

$.address.value([some url])

私たちのアプリには非常に詳細なユーザー管理システムがあり、ユーザーはアプリ内のどの機能にどのユーザーがアクセスできるかを定義できます。ユーザーがそのアクション メソッドによって提供される機能を使用する権限を持っているかどうかを決定する、カスタマイズされた Authorize 属性で各アクション メソッドを装飾します。承認はうまく機能しますが、問題は、ユーザーが特定のアクション メソッドを使用する権限を持っていない場合、ブラウザーの URL が、クリックしたリンクのページにいるかのように反映されることです。

たとえば、/SomeController/UnpermittedAction という URL が、ユーザーが使用できないアクション メソッドを表している場合、ユーザーがそのメソッドへのリンクをクリックすると、次のように実行されます。

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

次に、アクションは Unauthorized 応答を返し、その機能の使用が許可されていないことをユーザーに表示します。しかし、当然のことながら、ユーザーのブラウザ ウィンドウには次のように表示されます。

somedomain.com/#/SomeController/UnpermittedAction

それ自体は実際には問題ではありません。問題は、ユーザーが他のページに移動してからブラウザの戻るボタンをクリックすると、不正なメッセージが再び表示され、理由がわからないため多少混乱しているように見えることです。そのメッセージを見ています。理想的には、ユーザーが [戻る] ボタンをクリックした場合に、ユーザーが使用を許可されていた最後のページにユーザーを戻します。

私の質問は、許可されていないアクションの URL をブラウザーの履歴や jQuery アドレスの履歴から削除する方法はありますか?

4

1 に答える 1

0

JavaScriptで試してください

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

これにより、最後の履歴エントリが新しい URL に置き換えられます

于 2013-06-19T09:42:04.397 に答える