页面请求过程:

根据这个流程,网上一般的权限验证在:
Http.Module.AuthorizeRequest
Http.Module.PreRequestHandlerExecute

例如使用前者:

using System;
using System.Web;
using System.Security.Principal;
namespace MyModules
{
    public class CustomModule : IHttpModule
    {
        public CustomModule() { }
        public void Dispose() { }
        public void Init(HttpApplication app)
        {
            //建立安全模块   
            app.AuthenticateRequest += new EventHandler(this.AuthenticateRequest);
        }

private void AuthenticateRequest(object o, EventArgs e)
        {
            HttpApplication app = (HttpApplication)o;
            HttpContext content = (HttpContext)app.Context;

if ((app.Request["userid"] == null) || (app.Request["password"] == null))
            {
                content.Response.Write("未提供必需的参数!!");
                content.Response.End();
            }

string userid = app.Request["userid"].ToString();
            string password = app.Request["password"].ToString();
            string[] strRoles = AuthenticateAndGetRoles(userid, password);
            if ((strRoles == null) || (strRoles.GetLength(0) == 0))
            {
                content.Response.Write("未找到相配的角色!!");
                app.CompleteRequest();
            }
            GenericIdentity objIdentity = new GenericIdentity(userid, "CustomAuthentication");
            content.User = new GenericPrincipal(objIdentity, strRoles);
        }

private string[] AuthenticateAndGetRoles(string r_strUserID, string r_strPassword)
        {
            string[] strRoles = null;
            if ((r_strUserID.Equals("Steve")) && (r_strPassword.Equals("15seconds")))
            {
                strRoles = new String[1];
                strRoles[0] = "Administrator";
            }
            else if ((r_strUserID.Equals("Mansoor")) && (r_strPassword.Equals("mas")))
            {
                strRoles = new string[1];
                strRoles[0] = "User";
            }
            return strRoles;
        }
    }
}

  编辑Web.config文件:   
  <system.web>   
  <httpModules>   
          <add   name="Custom"   type="MyModules.CustomModule,Custom"/>   
  </httpModules>   
  </system.web>  
  Custom.aspx页面内容:   
    
  <script   language="c#"   runat="server">   
  public   void   page_load(Object   obj,EventArgs   e)   
  {   
    lblMessage.Text   =   "<H1>Hi,   "   +   User.Identity.Name   +   "</H1>";   
    if(User.IsInRole("Administrator"))   
          lblRole.Text="<H1>You   are   an   Administrator</H1>";   
    else   if(User.IsInRole("User"))   
          lblRole.Text   =   "<H1>You   are   a   normal   user</H1>";   
  }   
  </script>   
  <form   runat="server">   
  <asp:Label   id="lblMessage"   forecolor="red"   font-size="10pt"   runat="server"/>   
  <asp:Label   id="lblRole"   forecolor="red"   font-size="10pt"   runat="server"/>   
  </form>

或者使用后者:

using System;
using System.Web;
namespace MyModule
{
    public class MyModule : IHttpModule
    {
        public void Init(HttpApplication application)
        {
            application.AcquireRequestState += (new
            EventHandler(this.Application_AcquireRequestState));
        }
        private void Application_AcquireRequestState(Object source, EventArgs e)
        {
            HttpApplication Application = (HttpApplication)source;
            User user = Application.Context.Sesseion["User"];  //获取User
            string url = Application.Context.Request.Path;
            //获取客户访问的页面
            Module module = xx; //根据url得到所在的模块
            if (!RightChecker.HasRight(user, module))
                Application.Context.Server.Transfer("ErrorPage.aspx");
            //如果没有权限,引导到错误处理的页面
        }
        public void Dispose()
        {
        }
    }
}

使用httpModule做权限系统的更多相关文章

  1. Asp.net core IdentityServer4与传统基于角色的权限系统的集成

    写在前面 因为最近在忙别的,好久没水文了 今天来水一篇: 在学习或者做权限系统技术选型的过程中,经常有朋友有这样的疑问 : "IdentityServer4的能不能做到与传统基于角色的权限系 ...

  2. ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2、linux 如何修改只读文件 3、ubuntu安装

    1.ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 答案:需要超级用户权限 sudo 2.linux 如何修改只读文件 答案:可以使用chmod命令,为改文件提供其他的权限.u ...

  3. 以一个权限系统来告别WebForm —(一)项目整休架构设计与数据库设计

    在本节我想与大家与分享一下,我所将要做的权限系统的架构和数据库的表的设计.请各位大神们对我项目中设计的不足之处进行指导,让我得以更好的写完它,留给需要它的人. 我的项目架构如下图所示: 如上图所示,在 ...

  4. S2SH商用后台权限系统第一讲

    各位博友: 您好!从今天开始我们做一套商用的权限系统.功能包含用户管理.角色管理.模块管理.权限管理.大家知道每个商用系统肯定会拥有一套后台系统,我们所讲的权限系统是整个系统核心部分.本套系统技术有s ...

  5. 权限系统与RBAC模型概述

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3793894.html ...

  6. 权限系统与RBAC模型概述[绝对经典]

    0. 前言 一年前,我负责的一个项目中需要权限管理.当时凭着自己的逻辑设计出了一套权限管理模型,基本原理与RBAC非常相似,只是过于简陋.当时google了一些权限管理的资料,从中了解到早就有了RBA ...

  7. 权限系统(RBAC)的数据模型设计

    前言: RBAC是Role-Based Access Control的缩写, 它几乎成为权限系统的数据模型的选择标配. 之前写个两篇关于权限系统的文章, 主要涉及如何在应用中实现权限控制, 对权限系统 ...

  8. 高校手机签到系统——第一部分Authority权限系统(上)

    序:今天开始写一个算是我第一个系列的文章——高校手机签到系统.本系统结合我们学校自身的一些特点编写.这是我的毕业设计项目,写在这里算是给最后论文的时候一些点滴的记录.另外也想通过这个系列的文章找到一份 ...

  9. [转]权限系统与RBAC模型概述[绝对经典]

    转自:https://blog.csdn.net/yangwenxue_admin/article/details/73936803 0. 前言 一年前,我负责的一个项目中需要权限管理.当时凭着自己的 ...

随机推荐

  1. 【Uvalive 2531】 The K-League (最大流-类似公平分配问题)

    [题意] 有n个队伍进行比赛,每场比赛,恰好有一支队伍取胜.一支队伍败.每个队伍需要打的比赛场数相同,给你每个队伍目前已经赢得场数和输得场数,再给你一个矩阵,第 i 行第 j 列 表示队伍 i 和队伍 ...

  2. webkit中DOM 事件有多少

    webkit中DOM 事件有多少 目前客户端javascript中大量的工作就是处理浏览器,用户触发的各种事件,下面是webkit中这些事件的集合,有一些时常见的,标准规定的,而另一些则是webkit ...

  3. 检查并创建目录mkdir

    os.listdir() os.path.isdir() os.path.join() os.mkdir() # -*- coding:utf-8 -*- import os,sys def mkdi ...

  4. C#数据库连接字符串

    转自:http://blog.csdn.net/xiaokexinger/article/details/1541441 在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式 ...

  5. (转载)查看三种MySQL字符集的方法

    (转载)http://database.51cto.com/art/201010/229171.htm MySQL字符集多种多样,下面为您列举了其中三种最常见的MySQL字符集查看方法,该方法供您参考 ...

  6. TeamViewer 远程时出现:现在无法捕捉画面。这可能是由于恰的用户切换或远程桌面会话断开、最小化

    关掉远程访问主机的TeamViewer ,再重新打开软件

  7. linux下出现+ ls --color=auto -l --color=auto...++ echo -ne '\033]0;root@imon-2:~'等

    [root@imon-2 ~]# cd /root/ + cd /root/ ++ echo -ne '\033]0;root@imon-2:~' [root@imon-2 ~]# ll + ls - ...

  8. 《C语言程序设计现代方法》第1章 C语言概述

    C语言的特点:C语言是一种底层语言.C语言是一种小型语言.C语言是一种包容性语言. C语言的优点:高效.可移植.功能强大.灵活.标准库.与UNIX系统集成. C语言的缺点:C程序更容易隐藏错误.C程序 ...

  9. JavaScript高级程序设计53.pdf

    共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...

  10. 【转】shell 教程——02 几种常见的Shell

    上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说 ...