上回我们说到了SecurityPage类,也就是关于后台的所有页面都要继承这个类。现在我们让所有后台页面继承SecurityPage.cs这样就把所有的验证重构到这一个类中。一些验证的业务逻辑就在这里进行了(主要来验证用户在该页面有哪些操作权限),这样看起来就方面多了。那么我看看看这个类中都包含一些什么元素呢?
public class SecurityPage:BasePage
{
//Methods
private static CheckPurviewElement checkPurviewElement; //这两个类 类型变量主要是和自定义配置文件中的结点对应 后面详细讲。
private static CheckSecurityCodeElement checkSecurityCodeElement;
public SecurityPage()
{
InitializeConfigElement();
}
//这里初始化上面声明的两个类,实际就是读取PageSecurity.config配置文件下对应结点的元素。
private static void InitializeConfigElement()
{
if (checkSecurityCodeElement == null)
{
//我们通过读取配置文件的结点 返回一个pageSecuritySection对象。
PageSecuritySection section = WebConfigurationManager.GetSection("PWeb/PageSecurity") as PageSecuritySection;
if (section != null)
{
checkSecurityCodeElement = section.CheckSecurityCode;
}
...................................略
}
//PageSecuritySection的全貌会慢慢分析。
protected override void OnInit(EventArgs e) //我们在OnInit事件中判断用户是否有权限来登陆后台。
{
base.OnInit(e);
this.SetViewStateUserKey();
if (!PWContext.Current.User.IsSuperAdmin) //PWContext后面讲解。从方法中我们可以推断出:判断是否是超级管理员。如果不是则执行下面语句。
{
this.CheckPurview(); //该方法的主要作用是判断非超级管理员对页面有哪些权限。
}
}
protected virtual void CheckPurview()
{
//判断权限的地方
}
}
注:“PWeb/PageSecurity”映射配置文件中Config\PageSecurity.config文件。
<PWeb>
<PageSecurity configSource="Config\PageSecurity.config"/>
<TaskSchedule configSource="Config\TaskSchedule.config"/>
</PWeb>
待续。。。。。