3

MVCRazorWebサイトでメンバーシッププロバイダーを使用しています。

お客様がアカウントを作成してログインした後、ログインにシステムアカウントを追加していることを確認する必要があります。そうしないと、次のページで問題が発生します。

私のページは次のようになります。

ここに画像の説明を入力してください

ご覧のとおり、上部のタブのいずれかをクリックして、この画面を回避できます。

これを処理するための最良の方法は何ですか?

タブを無効にする必要がありますか?もしそうなら、どこでそれらを無効にしますか?または、各ページをチェックして、このページにリダイレクトする必要がありますか?

助けてくれてありがとう!

4

3 に答える 3

3

他のページをロードする前に、その情報が入力されているかどうかを確認する必要があります。(おそらくアクションフィルターで)

リンクを無効にするだけで、悪意のあるユーザーがURLに直接移動する可能性があります。

于 2012-12-19T16:36:48.710 に答える
2

RedirectToAction()作成していない場合に使用します。例:

public ActionResult OrderGas(){

    // do check here to see if they have system account
    if (!hasSystemAccount()){

        // this will re-display the add another account page each time
        return RedirectToAction("AddAnotherAccountAction");
    }

    //other wise continue;
    return view("OrderGas");

}

または、モデルに応じてJavaScriptを使用してボタンを非表示にすることもできます

public ActionResult OrderGas(){

    // do check here to see if they have system account
    Boolean hasAccount = this.hasSystemAccount();

    // apply to the model
    model.hasSystemAccount = hasAccount;


    return view("OrderGas", model);

}

次に、jqueryはこの値をチェックし、それに応じてリンクを非表示にすることができます

if($('#hasSystemAccount').val().toLower() = "false"){

    $('.myLinkClass').hide();
}
于 2012-12-19T16:51:09.307 に答える
0

顧客がCustomerWithSystemAccountInfoなどの「システムアカウント」情報を追加したことを示す追加のメンバーシップROLEの使用を検討しましたか。

次に、コントローラーのアクションを次のように保護できます[Authorize(Roles = "CustomerWithSystemAccountInfo")]

ROLEに基づいて_layoutのメニューオプションを非表示または無効にする限り、次の記事では、私が非常に気に入っている方法を紹介します。

http://techbrij.com/981/role-based-menu-asp-net-mvc

于 2012-12-22T02:16:32.210 に答える