C#实现接口IHttpModule完成统一的权限验证
2013-11-14 17:07
357 查看
测试代码如下:
例子中是按栏目来验证的,比如“用户管理”。
如果功能权限信息全面的话,同样可以做功能权限的验证。
当然,web.config中还要配置HttpModule,参考:
MSDN资料:http://msdn.microsoft.com/zh-cn/library/vstudio/system.web.ihttpmodule(v=vs.80).aspx
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/") > -1 && httpApplication.Context.Session != null && httpApplication.Context.Session["Cache:Role"] != null) { IList list = (IList)httpApplication.Context.Session["Cache:Role"]; if (url.IndexOf("admin/users/") > -1 && !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 = 0; 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#实现QQ接口软件--QQ的HTTP接口协议探究
- 利用HttpModule和forms身份验证,实现角色验证控制
- HttpModule实现用户身份验证
- PHP实现微信JsApi接口--权限验证配置参数的获取
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net j
- HttpModule实现简单权限限制访问
- ASP.NET 框架 之HttpModule 例程:实现登录控制和权限控制
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net j
- 通过自定义注解或拦截器实现APP调用后接口全局权限验证
- HttpModule实现用户身份验证
- [转]C#实现QQ接口软件--QQ的HTTP接口协议探究
- C#实现QQ接口软件--QQ的HTTP接口协议探究
- C#实现QQ接口软件--QQ的HTTP接口协议探究
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net js javascript c++ python
- C# 通过实现IEnumerable/IEnumerator接口 完成foreach遍历
- 在.Net MVC结构API接口中推断http头信息实现公共的权限验证过滤器演示样例
- C#微信网页开发---JSSDK使用 通过config接口注入权限验证配置
- C#实现QQ接口软件--QQ的HTTP接口协议探究
- C#实现QQ接口软件--QQ的HTTP接口协议探究
- 实现IHttpModule接口获取Session来实现页面访问日志功能。