1

Web サイトを作成していますが、正しいログイン資格情報で検証せずに管理者ホーム/ユーザー ホームページを禁止したいと考えています。しかし、どうすればできますか。

    protected void btn_Login_Click(object sender, EventArgs e)
    {
        if (CheckFields())
        {
            user.Employee_ID = txtEID.Text;
            user.Employee_Password = txtEPassword.Text;
            user.Role = ddlRole.SelectedItem.ToString();

            if (uc.Login(user)==true && user.Role=="Admin")
            {
                Session["userID"] = user.Employee_ID;
                Response.Redirect("~/Admin/Admin.aspx");
            }
            else if (uc.Login(user) == true && user.Role == "Team Admin")
            {
                Session["userID"] = user.Employee_ID;
                Response.Redirect("TeamAdmin.aspx");
            }
            else if (uc.Login(user) == true && user.Role == "Team Admin")
            {
                Session["userID"] = user.Employee_ID;
                Response.Redirect("TeamMember.aspx");
            }
        }
    }

ここまでは正常に動作しています。しかし、サイトの管理ページ ( http://mysite.com/Admin/Admin.aspx )へのパスを直接設定すると、管理ページのすべてのコンテンツが表示されます。正しいログイン資格情報を確認せずに管理ページを禁止する必要があります

4

2 に答える 2

3

これを使用して、Admin ディレクトリに web.config ファイルを作成します。

<configuration>
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</configuration>

何らかの形式の asp.net 認証を使用している場合、認証されていないユーザーは拒否されます。

于 2013-09-04T18:39:11.180 に答える
1

承認を実装する必要があります ( http://msdn.microsoft.com/en-us/library/wce3kxhd.aspx )。

管理者ページが、管理者のみがアクセスできる別のフォルダーにある場合は、上記のリンクで説明されているように、認証セクションを含む web.config ファイルをそのフォルダーに配置できます。この承認セクションを設定して、管理者ロールのメンバーであるユーザーのみにアクセスを制限できます。これが正しく機能するためには、ASP.Net のセキュリティと承認を使用している必要があります。

または、Admin.aspx ページの Page_Load() メソッドに、ユーザーが Admins ロールのメンバーであることを確認するコードを配置することもできます。そうでない場合は、別のページにリダイレクトします。

.config ファイルでページ レベルの承認を構成することを好みます。これにより、1 つの場所に保持され、将来簡単に更新できるようになります。

于 2013-09-04T18:38:31.057 に答える