0

Windows認証を使用してMVCイントラネットを開発しています。

特定の役割のみが表示できるビューを含むフォルダーがあります。

そのフォルダーにweb.configファイルがあります

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <allow roles="Administrator, ICCManager"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</configuration>

ユーザーがこれらの役割のいずれかに属しているかどうかを確認するコードを記述します。そうでない場合は、ユーザーを情報ページにリダイレクトします。

これは私の最初のMVCプロジェクトであり、私はまだ自分のやり方を完全には知りません。したがって、実際にこのコードをどこに書くべきかわかりません。少しばかげているとは思いますが、まだわかりません。

4

4 に答える 4

1

ビューへのアクセスを直接構成する必要はありません。アクションメソッドへのアクセスを構成すると、ビューが返されます。

これを行うには、[Authorize]属性を使用してシングルアクションメソッドまたはコントローラー全体を装飾します。

// All actions in this class cannot be called by anonymous users
[Authorize]
public class MyController {

    // This action is just callable by users in role Admin
    [Authorize(Roles="Admin")]
    public ActionResult MyAction() {
        return View();
    }

    // This action is callable by any authorized user (inherited from class)
    public ActionResult MyAction() {
        return View();
    }
}

// Actions from this controller can be called by any user (even unauthorized)
public calls AnotherController {
}

許可されていないユーザーがページにアクセスしようとすると、ユーザーはweb.configloginUrlの要素の属性で構成したアクションにリダイレクトされます。authentication

<authentication mode="Forms">
    <forms loginUrl="~/Membership/Login" ... />
</authentication>
于 2012-11-21T10:53:26.597 に答える
0

これは開始するのに良い場所かもしれません:

http://theintegrity.co.uk/2010/11/asp-net-mvc-2-custom-membership-provider-tutorial-part-1/

ユーザーがどのような役割を持っているかなどを把握できるメンバーシッププロバイダーを実装する必要があります。非常にカスタマイズ可能です。

于 2012-11-21T10:50:54.417 に答える
0

特定のユーザーのデータベース内のレコードをチェックするコードはmodelクラス内にあり、そこからコントローラーに結果を返すことができます。

ではcontroller、ユーザーが許可されていない場合のように、ユーザーを情報ページにリダイレクトするか、プロファイルページにリダイレクトするなどのロジックを処理できます。

詳細については、ASP MVCに関する他の多くの概念をクリアするのに役立つ場合は、これを確認してください。

ASP.NETMVCチュートリアル

于 2012-11-21T10:52:22.963 に答える
0

コントローラメソッドでAuhtorizeAttributeを使用してアクションに制限を設定し、web.configで認証タグにフォーム認証を設定し、ログオンページを必要なページに設定します。ログオンページではなく情報のみの場合は、global.asaxを開き、Application_AuthenticateRequestメソッドをオーバーライドします。

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
        if (User.Identity.IsAuthenticated)
        {
            //redirect
        }       
}
于 2012-11-21T10:58:36.280 に答える