测试代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Web;
using Test.Model; namespace TestPermission
{
class PermissionHttpModule : System.Web.IHttpModule
{
public void Init(HttpApplication httpApplication)
{
httpApplication.AcquireRequestState += (new EventHandler(this.Application_AcquireRequestState));
} private void Application_AcquireRequestState(Object source, EventArgs e)
{
HttpApplication httpApplication = (HttpApplication)source;
string url = httpApplication.Context.Request.Path.ToLower(); if (url.IndexOf("/admin/") > -
&& httpApplication.Context.Session != null
&& httpApplication.Context.Session["Cache:Role"] != null)
{
IList list = (IList)httpApplication.Context.Session["Cache:Role"];
if (url.IndexOf("admin/users/") > - && !CheckPermission(list, "用户管理"))
{
ShowPagePermissionError(httpApplication);
}
}
} public void Dispose()
{ } /// <summary>
/// 是否有该模块的权限
/// </summary>
/// <param name="list"></param>
/// <param name="PermissionName"></param>
/// <returns></returns>
private bool CheckPermission(IList list, string PermissionName)
{
bool retBool = false;
PermissionModel model;
for (int i = ; i < list.Count; i++)
{
model = (PermissionModel)list[i];
if (model.parentName == PermissionName)
{
retBool = true;
break;
}
}
return retBool;
} /// <summary>
/// 跳转到权限错误页
/// </summary>
/// <param name="Application"></param>
private void ShowPagePermissionError(HttpApplication Application)
{
Application.Context.Response.Redirect("../PermissionError.htm", true);
} }
}

例子中是按栏目来验证的,比如“用户管理”。

如果功能权限信息全面的话,同样可以做功能权限的验证。

当然,web.config中还要配置HttpModule,参考:

<configuration>
<system.web>
<httpModules>
      <add name="PermissionHttpModule" type="TestPermission.PermissionHttpModule,TestPermission"/>
    </httpModules>
</system.web>
</configuration>

MSDN资料:http://msdn.microsoft.com/zh-cn/library/vstudio/system.web.ihttpmodule(v=vs.80).aspx

C#实现接口IHttpModule完成统一的权限验证的更多相关文章

  1. WebAPI接口设计:SwaggerUI文档 / 统一响应格式 / 统一异常处理 / 统一权限验证

    为什么还要写这类文章?因为我看过网上很多讲解的都不够全面,而本文结合实际工作讲解了swaggerui文档,统一响应格式,异常处理,权限验证等常用模块,并提供一套完善的案例源代码,在实际工作中可直接参考 ...

  2. 跟我一起学.NetCore之熟悉的接口权限验证不能少(Jwt)

    前言 权限管控对于一个系统来说是非常重要的,最熟悉不过的是菜单权限和数据权限,上一节通过Jwt实现了认证,接下来用它实现接口权限的验证,为什么不是菜单权限呢?对于前后端分离而言,称其为接口权限感觉比较 ...

  3. Spring Boot AOP 扫盲,实现接口访问的统一日志记录

    AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层 ...

  4. C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置

    官方文档是微信JS-SDK的使用步骤http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.B ...

  5. asp.net获取当前页面文件名,参数,域名等方法。统一session验证和权限验证的方法

    转:http://blog.csdn.net/llll29550242/article/details/6054323 ASP.net后台获取当前页面的文件名 System.IO.Path.GetFi ...

  6. SharePoint REST API - 使用REST接口对列表设置自定义权限

    博客地址:http://blog.csdn.net/FoxDave SharePoint网站.列表和列表项都属于SecurableObject类型.默认情况下,一个安全对象继承父级的权限.对一个对 ...

  7. 基于注解的接口限流+统一session认证

    代码心得: 一个基本的做法:对于用户身份认证做到拦截器里,针对HandlerMethod进行统一拦截认证,根据方法上的注解标识,判别是否需要身份验证,并将查找出来的User实体存入ThreadLoca ...

  8. 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(转)

    进行微信开发已经一阵子了,从最初的什么也不懂,到微信授权登录,分享,更改底部菜单,素材管理,等. 今天记录一下微信jssdk 的分享给朋友的功能,获取config接口注入. 官方文档走一下简单说:四步 ...

  9. Swagger生成的接口需要权限验证的处理方法

    通常开发API的时候需要对接口进行权限验证,而我们在使用Swagger生成接口文档界面的时候,直接调用需要权限验证的接口会提示"当前用户没有登陆" 为了解决此问题,我们需要更改一下 ...

随机推荐

  1. android 获取文本框回车输入

    扫描头开启,并发送回车 txtUsername.setOnEditorActionListener(new OnEditorActionListener() { @Override public bo ...

  2. UnionFind问题总结

    UnionFind就是acm中常用的并查集... 并查集常用操作 另外补充一下STL常用操作 相关问题: 547. Friend Circles 纯裸题噢... class Solution { pu ...

  3. Android逆向之smali

    Android逆向之smali 头信息 smail文件前三行 .class <访问权限> [关键修饰字] <类名>; .super <父类名>; .source & ...

  4. fork()函数、进程表示符、进程位置

    linux.centos6.5 fork()函数:作用于创建子进程.返回值有两个,一个是向父进程返回它的pid,一个是返回0: eg1: #include<stdio.h> #includ ...

  5. Mac 下 软件安装路径查看 命令: Which, 估计Linux 也是

    ✘ marikobayashi@juk  ~  which git /usr/bin/git marikobayashi@juk  ~  which maven maven not found ...

  6. redis复习

    一起学习...

  7. Elasticsearch 自定义多个分析器

    分析器(Analyzer) Elasticsearch 无论是内置分析器还是自定义分析器,都由三部分组成:字符过滤器(Character Filters).分词器(Tokenizer).词元过滤器(T ...

  8. 学生管理系统(springMVC)

    <Java Web编程>课程设计                                                                               ...

  9. ffmpeg命令: 删除视频中不需要的音频流

    1.ffprobe  gf.mkv 查看 2.ffmpeg  -i gf.mkv  -map 0:0 -map 0:2  -vcodec copy -acodec copy out.mkv 注: -m ...

  10. GMM基础

    一.单成分单变量高斯模型 二.单成分多变量高斯模型 若协方差矩阵为对角矩阵且对角线上值相等,两变量高斯分布的等值线为圆形. 若协方差矩阵为对角矩阵且对角线上值不等,两变量高斯分布的等值线为椭圆形, 长 ...