C#实现接口IHttpModule完成统一的权限验证
测试代码如下:
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完成统一的权限验证的更多相关文章
- WebAPI接口设计:SwaggerUI文档 / 统一响应格式 / 统一异常处理 / 统一权限验证
为什么还要写这类文章?因为我看过网上很多讲解的都不够全面,而本文结合实际工作讲解了swaggerui文档,统一响应格式,异常处理,权限验证等常用模块,并提供一套完善的案例源代码,在实际工作中可直接参考 ...
- 跟我一起学.NetCore之熟悉的接口权限验证不能少(Jwt)
前言 权限管控对于一个系统来说是非常重要的,最熟悉不过的是菜单权限和数据权限,上一节通过Jwt实现了认证,接下来用它实现接口权限的验证,为什么不是菜单权限呢?对于前后端分离而言,称其为接口权限感觉比较 ...
- Spring Boot AOP 扫盲,实现接口访问的统一日志记录
AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层 ...
- C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置
官方文档是微信JS-SDK的使用步骤http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.B ...
- asp.net获取当前页面文件名,参数,域名等方法。统一session验证和权限验证的方法
转:http://blog.csdn.net/llll29550242/article/details/6054323 ASP.net后台获取当前页面的文件名 System.IO.Path.GetFi ...
- SharePoint REST API - 使用REST接口对列表设置自定义权限
博客地址:http://blog.csdn.net/FoxDave SharePoint网站.列表和列表项都属于SecurableObject类型.默认情况下,一个安全对象继承父级的权限.对一个对 ...
- 基于注解的接口限流+统一session认证
代码心得: 一个基本的做法:对于用户身份认证做到拦截器里,针对HandlerMethod进行统一拦截认证,根据方法上的注解标识,判别是否需要身份验证,并将查找出来的User实体存入ThreadLoca ...
- 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(转)
进行微信开发已经一阵子了,从最初的什么也不懂,到微信授权登录,分享,更改底部菜单,素材管理,等. 今天记录一下微信jssdk 的分享给朋友的功能,获取config接口注入. 官方文档走一下简单说:四步 ...
- Swagger生成的接口需要权限验证的处理方法
通常开发API的时候需要对接口进行权限验证,而我们在使用Swagger生成接口文档界面的时候,直接调用需要权限验证的接口会提示"当前用户没有登陆" 为了解决此问题,我们需要更改一下 ...
随机推荐
- 让photoshop cc 支持 webp格式
下载WebP.8bi文件,看PS cc 是32位还是64位,找到对应的文件. brushes8.com-2017-11-03_08-29-21_654098.7z 把 WebP.8bi 复制到pho ...
- JSON笔记整理
JSON简介: JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML ...
- Visual Studio Code 写Python 代码
最近在博客园新闻里面看到微软发布的Visual Studio Code 挺好用的,现在在学习Python,查看官网发布的VSCode 是支持Python代码,自己试着安装用一下,下面是我的安装以及配置 ...
- C#自定义异常 统一异常处理
异常类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- appium定位之xpath定位
前面也说过appium也是以webdriver为基的,对于元素的定位也基本一致,只是增加一些更适合移动平台的独特方式,下面将着重介绍xpath方法,这应该是UI层元素定位最强大的方法啦! 以淘宝app ...
- JSLint在idea编译器中报错
jslint:this function needs a 'use strict' pragma报错解决 JSInt是指在编写代码的时候进行代码检查语法,没有必要开启 关闭的方法 在setting中搜 ...
- Spring 源码分析之 bean 实例化原理
本次主要想写spring bean的实例化相关的内容.创建spring bean 实例是spring bean 生命周期的第一阶段.bean 的生命周期主要有如下几个步骤: 创建bean的实例 给实例 ...
- POJ 2909
#include<iostream> #include<stdio.h> #define M 35000 #include<math.h> #define N 38 ...
- asp.net core的docker实践
如果centos中没有安装和docker和.net core镜像,先安装docker和asp.net core 镜像 安装dockeryum -y install docker-io 启动 Docke ...
- [git与github]__git与github简单了解
前言 关于版本控制,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 我们通过版本控制系统可以解决的问题:可以非常方便的查看我们的源码文件的历代更新版本.或将我们的项目源 ...