开发系统的时候,应用系统的权限控制是非常重要的一个部分。在Asp中,要实现权限的控制是比较麻烦的事件,因为我们必须要在每个需要控制权限的Asp页面添加权限控制代码,从而控制客户对页面的访问。这样带来的问题,除了编写大量的重复代码外,由于权限控制部分同业务处理部分的模块紧密耦合在一些,对权限控制模块的修改,往往又会带来大量的修改工作,甚至造成大量的Bug。
所以,我们现在需要将权限控制和业务处理模块进行解耦,使得两个部分可以独立开发和修改,而不会相互影响,或者,将影响减到最低。在Asp.net中,我们可以使用HttpModule实现。
public class RightChecker
{
public static bool HasRight(User user,Module module)
{
//进行权限验证
}
}
{
public static bool HasRight(User user,Module module)
{
//进行权限验证
}
}
public MyModule:IHttpModule
{
public void Init(HttpApplication application)
{
application.AcquireRequestState+= new EventHandler(this.Application_AcquireRequestState);
}
public void Application_AcquireRequestState(Object source,EventArgs e)
{
HttpApplication application=(HttpApplication)source;
User user = application.Context.Session["User"];//获取User
string url = application.Context.Request.Path;//获取用户访问的页面
Module module = //根据Url得到所有模块
if()
{
application.Context.Server.Transfer("Error.aspx");
}
}
public void Dispose()
{}
}
{
public void Init(HttpApplication application)
{
application.AcquireRequestState+= new EventHandler(this.Application_AcquireRequestState);
}
public void Application_AcquireRequestState(Object source,EventArgs e)
{
HttpApplication application=(HttpApplication)source;
User user = application.Context.Session["User"];//获取User
string url = application.Context.Request.Path;//获取用户访问的页面
Module module = //根据Url得到所有模块
if()
{
application.Context.Server.Transfer("Error.aspx");
}
}
public void Dispose()
{}
}