身份验证和授权的另类实现思路

在Web应用程序中,有些信息只对登录用户开放,这就要对用户身份进行验证,我们常用的方法是在用户登录成功后将用户信息保存在Session中,然后在需验证身份的页面中对Session中的值进行判断,例如:

public partial class Manage: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //身份验证
        if (Session["UserName"] == null)
        {
            Response.Redirect("Login.aspx", false);
        }
    }
}

每个需验证身份的页面都要写上这么几句,不仅繁琐而且代码也不美观,下边我们提供另一种思路:创建一个BasePage类,它继承自System.Web.UI.Page类,在这个类加载过程中就进行身份的验证,凡是需身份验证的页面只要继承自这个类即可:

BasePage类:
using System;
using System.Collections.Generic;
using System.Text;
using MzwuCom.Model;
using System.Web.UI;

namespace MzwuCom.UI
{
    public class BasePage : System.Web.UI.Page
    {
        public UserInfo userInfo = new UserInfo();

        /// <summary>
        /// 构造函数
        /// </summary>
        public BasePage()
        {
            this.Load += new EventHandler(BasePage_Load);
        }

        /// <summary>
        /// 加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void BasePage_Load(object sender, EventArgs e)
        {
            CheckUserLogin();
        }

        /// <summary>
        /// 登录验证
        /// </summary>
        public void CheckUserLogin()
        {
            if (Session["UserName"]!=null)
            {
                userInfo.UserName = Session["UserName"].ToString();
                userInfo.Level = Convert.ToInt32(Session["Level"]);
            }
            else
            {
                Response.Redirect("Login.aspx", false);
            }
        }
    }
}

Manage.aspx.cs:
/// <summary>
/// 继承自 BasePage
/// </summary>
public partial class Manage : MzwuCom.UI.BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //
    }
}

在BasePage类的基础上我们还可以创建一些子类,他们将对用户权限进行验证,以判断用户是否有访问资源的权限,这样就实现了授权,废话不多说了,有兴趣的朋友点击这里下载源码

评论: 0 | 引用: 0 | 查看次数: 3812
发表评论
登录后再发表评论!