1

役割ベースの承認を宣言的な方法で使用しようとしています。許可されていないユーザーがページにアクセスしようとすると、例外が発生したり、ユーザーにエラー メッセージが表示されたりすることはありません。許可されていないメッセージを表示するにはどうすればよいですか? それは宣言的な方法で可能ですか?

コーディングを使用することは良いオプションではありません。私にはいくつかの役割があり、フォルダーは複数の役割に対して承認されていますが、他のフォルダーは 1 つの役割に対して承認されています。

ありがとう

4

4 に答える 4

3

ログイン ページで次のコードを使用して、ユーザーを無許可のページまたはデフォルト ページにリダイレクトします。

    protected void Page_Load( object sender, EventArgs e )
    {
        if( Page.IsPostBack )
            return;

        if( !Request.IsAuthenticated )
            return;

        if( !string.IsNullOrEmpty( Request.QueryString["ReturnUrl"] ) && !UrlAuthorizationModule.CheckUrlAccessForPrincipal(Request.QueryString["ReturnUrl"], User,"GET"))
        {
            // In Forms Authentication, authenticated but unauthorized requests are converted into a Redirect to the Login page.  
            // Redirect these to an error page instead.
            Response.Redirect( "~/UnauthorizedAccess.aspx", false );
        }
        else
        {
            Response.Redirect( FormsAuthentication.DefaultUrl, false );
        }
    }

何が起こっているかの写真と詳細については、次のリンクを参照してください。

http://www.asp.net/security/tutorials/user-based-authorization-cs

于 2010-09-01T20:47:29.823 に答える
0

認証に失敗すると、例外がスローされます。それは通過する必要があります。認証には何を使用していますか?匿名アクセスを無効にしましたか?

于 2010-08-06T15:46:20.583 に答える
0

おそらく、サイトマップを利用することができます。それらの詳細についてはこちらを参照してください。さらに、セキュリティをここで結び付ける方法についても少し説明します。

于 2010-09-01T19:59:32.817 に答える
0

web.config を使用して、さまざまなフォルダーやファイルのアクセス許可を設定することもできます。各フォルダーには、次のように許可または拒否のリストを含めることができます。

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="Administrators" />
      <allow roles="Random Role" />
      <deny users="*" />
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>

次に、誰かがアクセス許可を持っていない承認が必要なページにアクセスすると、ログイン ページにリダイレクトされます。次に、それらのページのクエリ文字列を確認し、場合によってはケース固有の応答を設定するか、少なくとも returnURL ページが含まれている場合は、「このページを表示する権限がありません」と言うことができます。

于 2010-09-01T20:54:10.183 に答える