基于表单的身份验证问

时间:2010-04-02 07:33:57

标签: c# .net asp.net visual-studio security

我有2页:Login.aspx和Satis.aspx。如果身份验证正确,我会从Login.aspx重定向到Satis.aspx。如果我从满意后注销我重定向到Login.aspx。但如果我在网络扫描仪上写了satisf.aspx'url,我输入了satisf.aspx。但我没有登录Satis.aspx。我不应该直接进入Satis.aspx。

我的网络配置:

    <authentication mode="Forms">
            <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" path="/"  protection="All">
                <credentials>
                    <user name="a" password="a"></user>
                </credentials>
            </forms>
        </authentication>

    <authorization>
      <allow users="*"/>
    </authorization>


    </system.web>
    <location path="~/ContentPages/Satis/Satis.aspx">
        <system.web>
            <authorization>
                <deny users="?"/>
            </authorization>
        </system.web>
    </location>

Login.aspx.cs:

   protected void lnkSubmit_Click(object sender, EventArgs e)
        {

            if(FormsAuthentication.Authenticate(UserEmail.Value,UserPass.Value))
            {
                  FormsAuthentication.RedirectFromLoginPage
                   (UserEmail.Value, PersistForms.Checked);
            }

             else
                Msg.Text = "Invalid Credentials: Please try again";

        }

Satis.aspx

 protected void LogoutSystem_Click(object sender, EventArgs e)
        {
            FormsAuthentication.SignOut();

            Response.Redirect("~/Login/Login.aspx");
        }

1 个答案:

答案 0 :(得分:3)

我认为你应该在你的web.config文件中使用“deny users =”?“”而不是“allow users =”*“”

[*]表示所有用户甚至是那些未通过身份验证的用户

[?]仅表示通过身份验证的用户