使用Session验证用户登录

来源:互联网 发布:国外工资 租房 知乎 编辑:程序博客网 时间:2024/05/16 10:11

//在ASP.NET中,利用Session对象验证用户是否登录都方法很简单,如例子中,当用户安全登录时,可以利用如下代码保存用户都登录名,并跳转到Login.aspx中。

if(txtName.Text == "accp" && txtPassword.Text == "accp")
{
 Session["UserName"] = txtName.Text.Trim();
 Response.Redirect("Login.aspx");
}

 

使用Session进行验证每个页面,只要每个页面继承了此基类就完成验证了  OK!
public class Basic:System.Web.UI.Page
{
    /// <summary>
    /// 用户登录信息
    /// </summary>
    public User loginUser
    {
        get
        {
            if (Session["loginUser"] != null)
            {
                return (User)Session["loginUser"];
            }
            else
            {
                return null;
            }
        }
        set
        {
            Session["loginUser"] = value;
        }
    }

    /// <summary>
    /// 判断用户是否已登录

    /// </summary>
    public bool isLogin
    {
        get
        {
            if (loginUser != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

    /// <summary>
    /// 初始化方法
    /// </summary>
    /// <param name="e"></param>
    protected override void  OnLoad(EventArgs e)
    {
        if (!this.AppRelativeVirtualPath.Substring(2).Equals("login.aspx"))
        {
            if (isLogin == false)
            {
                Response.Redirect("index.aspx");
            }
        }
       
        base.OnLoad(e);
    }

    /// <summary>
    /// 异常处理
    /// </summary>
    /// <param name="e"></param>
    protected override void OnError(EventArgs e)
    {
        Response.Redirect("index.aspx");
        //清除异常
        Server.ClearError();
    }
}

 

 

看看这两个基类,哪个更合适

 

/// <summary>
///IfSession 的摘要说明
/// </summary>
public class IfSession : Page
{
    public IfSession()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    protected override void OnLoad(EventArgs e)
    {
        if (!Page.AppRelativeVirtualPath.Substring(2).Equals("Login.aspx"))
        {
            if (Session == null)
            {
                Response.Redirect("Login.aspx");
            }
          
            if (Session["CurrentUser"] == null)
            {
                Response.Redirect("Login.aspx");
            }

            if ((Session["CurrentUser"] as LYC )== null)
            {
                Response.Redirect("Login.aspx");
            }
        }
        base.OnLoad(e);
    }
    public LYC lyc
    {
        get
        {
            return Session["CurrentUser"] as LYC;
        }
    }
}

 

Session对象默认失效期为20分钟,您可以在Web.Config中对其进行设置,代码如下

<system.web>
 <sessionState timeout="40"/>
</system.web>

原创粉丝点击