0

こんにちは、Web アプリの管理モジュールの設定に問題があります

  1. システム管理者と技術者の 2 つの役割を担っていました

  2. 管理モジュールに移動すると、システムは彼が管理者であるかどうかを確認します

  3. ユーザーが管理者でない場合、ページにリダイレクトされます

    このページへのアクセス権がありません。

Web.config を使用して、サブディレクトリ Admin のアクセスを制限しました

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

また、ログインしているユーザーが管理者かその他かを確認する C# コードがあります。

protected void Page_Load(object sender, EventArgs e)
    {
        if (HttpContext.Current.User.Identity.IsAuthenticated)
        {
            if (Page.User.IsInRole("admin"))
            {
                if (!Page.IsPostBack)
                {
                    DisplayRolesInGrid();
                }
            }
            if(!Page.User.IsInRole("admin"))
            {
                Response.Redirect("/accessPage.aspx");
            }

        }
    }
4

2 に答える 2

1

これら 2 種類の役割管理を混同しないでください。1 つは web.config にあり、もう 1 つは C# を介したコードにあります。web.config アクセス部分を削除し、既に行ったように codein Page_Load 関数を使用するだけです。

protected void Page_Load(object sender, EventArgs e)
{

        if (Page.User.IsInRole("admin"))
        {
            // all is good, do not do anything
            // if you want to initialized something, do it here
        }
        else
        {
            // opps you do not have access here, take him somewhere else
            Response.Redirect("/accessPage.aspx");
        }


}
于 2012-08-23T15:53:08.247 に答える
0

あなたの質問が何であるかはわかりませんが、少なくとも 1 つの問題があることがわかり <deny users="*"/>ます。つまり、全員を拒否するということです。認証<deny users="?" />されていない<deny roles="Tech" />ユーザーを締め出し、技術ユーザーが許可されないようにする必要があります。

于 2012-08-23T15:46:17.183 に答える