对权限管理页面控制知识-创新互联

每个用户对应一个角色,我们只需要对这个角色进行分配相应的权限即可,也就是给这个用户分配了权限,这样管理起来很方便,设计也很简答,大概就是用户表,角色表,模块表,在加上一个角色与模块对应的表就可以了,然后根据不同的用户权限,显示相应的模块或者提示没有权限访问,这里要说的就是,对每个页面的访问权限,如果都写的话,这么多的页面是个很大的工作量,类似判断用户是否登录一样,在asp.net中我们完全可以使用Forms验证来代替使用session每个页面都要判断的做法,同样,在这里我们也可以通过HttpModule来直接过滤掉没有访问权限的页面,方便多了,我们知道HttpModule可以再服务器端接收处理之前进行相关的过滤,这点给我们提供很大的方便,我们完全可以利用它的这一点,具体的来看看下:

    View Code

    public class CheckUserModule : IHttpModule

    {

    private static string loginPage = "login.aspx";

    #region IHttpModule Members

    public void Dispose()

    {

    //此处放置清除代码。

    }

    public void Init(HttpApplication context)

    {

    context.AcquireRequestState += new EventHandler(checkUserRight);

    }

    ///



    /// 检测用户权限

    ///


    void checkUserRight(object sender, EventArgs e)

    {

    HttpApplication application = (HttpApplication)sender;          // 获取应用程序

    string url =  HttpContext.Current.Request.Url.ToString();       // 获取Url

    int start=url.LastIndexOf('/') + 1;                             //查找URL中最后一个/的位置

    int end=url.IndexOf('?',start);                                 //查找URL中?位置

    string requestPage = null;

    if (end < 0) end = url.Length - 1;

    requestPage=url.Substring(start, end - start +1);               //得到所请求的页面

    requestPage = requestPage.ToLower();

    if (requestPage == loginPage) return;

    if (!isProtectedResource(requestPage)) return;

    User user=SJL.Web.HttpCode.WebUtility.currentUser;              //获得当前用户

    if (user==null)

    {

    application.Response.Redirect("~/Login.aspx");

    return;

    }

    if (SJL.Bll.UserRight.UserBLL.isAdmin(user)) return;
//检测用户权限
    if (!SJL.Bll.UserRight.RoleRightBLL.canAccessPage(user.RoleID, requestPage))

    application.Response.Redirect("~/AccessDeny.htm");

    }

    ///

    /// 判断页面是否为受权限管理保护的资源(如Aspx等)

    ///


    /// 所请求的页面

    /// 是否受保护

    bool isProtectedResource(string page)

    {

    page = page.ToLower();

    System.Collections.Generic.List protectedFiles =

    new System.Collections.Generic.List();            //受保护资源的扩展名

    protectedFiles.AddRange(new string[] { ".aspx", ".asmx", ".ashx" });

    string found=protectedFiles.Find(s => page.EndsWith(s));

    if (found == null)

    return false;

    ApplicationModule module = SJL.Bll.UserRight.ApplicationModuleBLL.getByUrl(page);

    if (module == null) return false;

    return !module.IsPublic;                                        //如果页面为公共模块则不受保护

    }

    #endregion

    public void OnLogRequest(Object source, EventArgs e)

    {

    //可以在此放置自定义日志记录逻辑

    }

    }
    更多http://www.cnblogs.com/shidaichenxun/
    Web.coinfig中配置下

   

   

   


    先判断是否登录,是否是受保护的资源,然后根据url来判断是否有权限访问!

10年的昭化网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整昭化建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“昭化网站设计”,“昭化网站推广”以来,每个客户项目都认真落实执行。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享文章:对权限管理页面控制知识-创新互联
文章分享:http://ybzwz.com/article/dsgchc.html