如何使用登录页面对所有页面进行身份验证

时间:2013-03-11 06:30:11

标签: asp.net authentication

我的项目中有五个.aspx个页面,第一个是登录页面,另一个是主页,索引等。问题是当用户在登录页面输入用户ID和密码时,它会直接到下一页是主页。但是,当我只是放置主页的URL时,它也会显示没有任何登录身份验证的页面。

3 个答案:

答案 0 :(得分:1)

对于项目的当前结构,您可以在验证用户凭据并存储登录的用户详细信息后,在登录页面上创建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

查看this简单表单身份验证实现

答案 1 :(得分: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的登录页面。

虽然这明确拒绝访问Members文件夹中的页面,但您可以重写它以阻止访问除主页之外的所有页面,方法是将<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");
    }
}

希望这有帮助。

答案 2 :(得分:0)

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

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

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