0

認証が必要な 1 つのページを除いて、公開 (認証なし) Web サイトがあります。それはうまくいきます。

保護されたページは、次の web.config を含むフォルダー内にあります。

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

        <customErrors mode="RemoteOnly" defaultRedirect="../WebForbidden.aspx">
            <!--<error statusCode="403" redirect="WebForbidden.aspx" />
            <error statusCode="404" redirect="FileNotFound.htm" />-->
        </customErrors>

    </system.web>
</configuration>

そして、そのページのマスターファイルには次のものがあります。

protected void Page_Init(object sender, EventArgs e)
    {
        CheckLogged();
    }

    public bool CheckLogged()
    {
        bool status = false;

        if (Session["Username"] == null)
        {
            FormsAuthentication.SignOut();
            Response.Redirect("../WebForbidden.aspx");
            //FormsAuthentication.RedirectToLoginPage();
        }
        else
        {
            status = true;
        }

        return status;
    }

そして、Web サイトのルートに WebForbidden.aspx ページがあります。

現在、禁止ページを表示する代わりに、保護されたページ (認証されない限り禁止されている) に直接入力しようとすると、エラーが表示されます:The resource cannot be foundもちろん、Web サイトは存在しないログインページにリダイレクトしようとしています。

どんな助けでも大歓迎です。

4

1 に答える 1

1

フォーム認証に、デフォルトを使用させるのではなく、リダイレクトするように指示してみてくださいWebForbidden.aspx。指定しない場合は、デフォルトが検索されます。Login.aspx

<system.web>
    <authentication mode="Forms">
        <forms loginUrl="WebForbidden.aspx" />
    </authentication>
</system.web>
于 2013-02-15T19:58:55.533 に答える