2

我的项目中有五个.aspx页面,第一个是登录页面,其他是主页,索引等。问题是当用户在登录页面输入用户名和密码时,它会直接进入下一页即主页. 但是当我简单地输入主页的 URL 时,它也会显示没有任何登录身份验证的页面。

4

3 回答 3

2

对于您项目的当前结构,您可以Session在验证用户凭据并存储登录用户详细信息后在登录页面上创建一个变量,即

在您的登录页面中,登录按钮单击处理程序执行以下操作:

  protected void btnLogin_Click(object sender, EventArgs e) 
 {
      string username= txtUsername.Text;
      string pwd = txtPassword.Text;

      //call your logic to verify user credentials.
      VerifyUserCredentialFromDb(username, pwd);

     if(UserValid)
     {
        Session["User"] = GetUserObject(username,pwd);

        //whatever your logic is, make sure, you create the Session object, before 
        //below line,whereever you are doing it
        Response.Redirect("Home.aspx");
     }
 }

并在所有其他页面的 Page_load

  protected void Page_Load(object sender, EventArgs e)
  {
      if(Session["User"]==null)
        Response.Redirect("login.aspx");
  }

顺便说一句,您应该查看Forms Authentication

看看这个简单的表单身份验证实现

于 2013-03-11T06:37:50.997 回答
1

您可以使用表单身份验证在 web.config 文件中控制身份验证...

<system.web>
    <authentication mode="Forms">
        <forms name="MySite" loginUrl="~/Login.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseCookies"/>
    </authentication>
    <authorization>
        <allow users="?"/>
    </authorization>
</system.web>

<location path="Members">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

这将阻止对网站中成员文件夹的所有未经授权的访问。因此,如果您只是在http://localhost/Members/Default.aspx地址栏中输入内容,它会将您发送回登录页面localhost/Login.aspx

虽然这明确拒绝访问成员文件夹中的页面,但您可以重写它以阻止访问除主页之外的所有页面,方法是替换<allow users="?" /><deny users="?" />您在其下方看到的。

通常,您还想在那些看起来像这样 (C#) 的页面中编写检查:

protected void Page_Load(object sender, System.EventArgs e)
{
    if (Context.User.Identity.IsAuthenticated) 
    {
        // User is logged in, continue
    }
    else
    {
        // No valid login...
        Session.Clear();
        Response.Redirect("~/Login.aspx");
    }
}

希望这可以帮助。

于 2013-03-11T07:11:36.473 回答
0

您需要在会话中保存用户凭据......以及在 aspx 页面上的页面加载事件中

 protected void Page_Load(object sender, EventArgs e)
 {   
  if(Session["Username"]==null)
  Response.Redirect("login.aspx");
 }

如果没有会话,它会重定向到登录页面..

于 2013-03-11T07:03:10.227 回答