日期:2014-05-17  浏览次数:21051 次

在 ASP.NET 中,如何巧用 HttpModule ,以实现系统全局登录逻辑判断,高手慎入

几乎每个系统都要登录,我看过一些系统直接在每个页面的 Page_Load 里面判断 if(session["user"] == null) ,来实现登录判断。我认为这样不好,维护性太差。

今天我要实现的就是系统全局登录逻辑判断。

还是直接贴代码了,代码能说明一切。

首先我们定义一个 SiteUser 类。

    /// <summary>
    /// 本网站需要记录的信息
    /// </summary>
    public class SiteUser
    {
        public int Id { get; set; }

        public string UserName { get; set; }

        public DateTime LoginTime { get; set; }
    }
复制代码

?

然后定义个 PassportManager 类,用来维护客户端和服务器端的状态信息。

    /// <summary>
    /// 系统账户管理,可以用 Session 或 Cookie 来管理
    /// </summary>
    public class PassportManager
    {
        /// <summary>
        /// 记录当前用户的信息
        /// </summary>
        /// <param name="siteUser"></param>
        public static void SaveSiteUser(HttpContext context, SiteUser siteUser)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            if (siteUser == null)
            {
                throw new ArgumentNullException("siteUser");
            }
            if (context.Session == null)
            {
                throw new NotSupportedException("当前上下文的 Session 为 Null,无法记录用户信息!");
            }
            context.Session["currentUser