拦截对该服务器所有的http请求
一:拦截对该服务器所有的http请求。
在config 中加,
<system.webServer> <modules> <add name="HttpAuthvalid" type="YGPT.Country.Auth.HttpAuthvalid"/> </modules> </system.webServer>
然后每次http请求都先进这个类(这个类需要继承
System.Web.IHttpModule
)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using Newtonsoft.Json; namespace YGPT.Country.Auth { /// <summary> /// 权限验证 /// </summary> public class HttpAuthvalid : System.Web.IHttpModule { public void Dispose() { //此处放置清除代码。 } public void Init(HttpApplication context) { context.AcquireRequestState += new EventHandler(SystemProcess); } /// <summary> /// 系统访问处理 (系统资源加载,权限验证等) /// </summary> void SystemProcess(object sender, EventArgs e) { HttpApplication application = (HttpApplication)sender;// 获取应用程序 string url = application.Request.Url.AbsolutePath.ToString();// 获取Url if (url == "/setToken")//如果是设置令牌 { if (!string.IsNullOrEmpty(application.Context.Request["param"])) { HttpCookie cookie = application.Request.Cookies["YGPT_SESSIONID"]; if (cookie == null) { cookie = new HttpCookie("YGPT_SESSIONID"); } //组合重置cookie 令牌 cookie.Value = application.Context.Request["param"] + YGPT.Country.Auth.EncryptDecrypt.AESEncrypt(YGPT.Country.Auth.Config.DesToValue + DateTime.Now.ToString("yyyyMMdd"), Config.DecryptKey); cookie.HttpOnly = true; cookie.Expires = DateTime.Now.AddDays(); application.Response.AppendCookie(cookie); application.Response.Write("JsonpHandler({\"result\":\"1\"})");//成功 application.Response.End(); return; } else { application.Response.Write("JsonpHandler({\"result\":\"0\"})");//失败 application.Response.End(); return; } } if (application.Request.Cookies["YGPT_SESSIONID"] == null || string.IsNullOrEmpty(application.Request.Cookies["YGPT_SESSIONID"].Value)) { application.Response.Redirect(YGPT.Country.Auth.Config.TimeOutUrl);//跳转到超时页面 application.Response.End(); return; } //string PermisWeburl = System.Configuration.ConfigurationManager.AppSettings["PermisWeburl"]; //string[] pweburls = PermisWeburl.Split(','); //for (int i = 0; i < pweburls.Length; i++) //{ // if (url.Contains(pweburls[i]))//登录超时 没权限不做验证 // { // return; // } //} if (System.Configuration.ConfigurationManager.AppSettings["workingmode"] != "deve") { )//页面权限 { User myuser = CurrentUser.GetUser(); if (myuser.UserID.ToUpper() == "ADMIN") { return; } /*验证页面权限*/ YGPT.Country.Auth.SystypeValue sv = new SystypeValue(); sv.SysType = Config.SystemType; sv.ValueName = url; if (myuser.PageHandButton.PageCollect.Contains(sv)) { ///跳转到无权限页面 CurrentUser.Goto_NoPermission(); } } )//http请求权限 { User myuser = CurrentUser.GetUser(); application.Response.ContentType = "text/plain"; application.Response.Buffer = true; application.Response.ExpiresAbsolute = DateTime.Now.AddDays(-); application.Response.AddHeader("pragma", "no-cache"); application.Response.AddHeader("cache-control", ""); application.Response.CacheControl = "no-cache"; if (CurrentUser.Userid.ToUpper() == "ADMIN") { return; } //验证请求权限 ////数据处理必须包含 req 参数 if (string.IsNullOrEmpty(application.Context.Request["req"])) { ///跳转到无权限页面 application.Response.Write(JsonConvert.SerializeObject("NoPermission")); application.Response.End(); } string UrlAndQu = url + "?req=" + application.Context.Request["req"]; YGPT.Country.Auth.SystypeValue sv = new SystypeValue(); sv.SysType = Config.SystemType; sv.ValueName = UrlAndQu; if (myuser.PageHandButton.PageCollect.Contains(sv)) { ///返回无权限信息 application.Response.Write(JsonConvert.SerializeObject("NoPermission")); application.Response.End(); return; } } } } public void OnLogRequest(Object source, EventArgs e) { //可以在此放置自定义日志记录逻辑 } } }
拦截对该服务器所有的http请求的更多相关文章
- 单点登录CAS使用记(五):cas-client不拦截静态资源以及无需登录的请求。
一.问题在哪? 在配置cas-client中,有这么一段配置: <filter> <filter-name>CAS Filter</filter-name> < ...
- 关于wcf异常异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut
异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut ...
- C# 向Http服务器送出 POST 请求
//向Http服务器送出 POST 请求 public string m_PostSubmit(string strUrl,string strParam) { string strResult = ...
- 接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。
[2015/8/5 19:28:49]错误信息:接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定 ...
- 解决WCF“接收对 http://xxx.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致"
最近在工作中新加了一个接口,本地调试的时候,直接抛出“接收对 http://xxx.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中 ...
- 基于Ryu的服务器实现及相关请求访问处理
基于Ryu的服务器实现及相关请求访问处理 前言及问题描述 近期又遇到了一个非常棘手的问题,由于Ryu是通过Python语言开发的,通过Ryu的wsgi的方式建立服务器,无法解析PHP,通过多次方法解决 ...
- jmeter ---测试TCP服务器/模拟发送TCP请求
jmeter测试TCP服务器/模拟发送TCP请求 jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求. TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响 ...
- 4xx错误的本质:服务器已经接收到请求
4xx错误的本质:服务器已经接收到请求, 路径错误! { URL: http://10.100.138.32:8046/3-0/app/account/maxin } { status code: 4 ...
- 跟着大彬读源码 - Redis 3 - 服务器如何响应客户端请求?(下)
继续我们上一节的讨论.服务器启动了,客户端也发送命令了.接下来,就要到服务器"表演"的时刻了. 1 服务器处理 服务器读取到命令请求后,会进行一系列的处理. 1.1 读取命令请求 ...
随机推荐
- Composer 安装时要求输入授权用户名密码?
D:\work\dreamland-yii>composer require "saviorlv/yii2-dysms:dev-master" Authentication ...
- springboot jar包运行中获取资源文件
1. 今天晚上写了一个程序,基于Spring boot的一个小网站,发现使用FileUtils.class.getResource(path)来获取jar包中的资源文件并不能成功,其路径很奇怪 fil ...
- [FWT] UOJ #310. 【UNR #2】黎明前的巧克力
[uoj#310][UNR #2]黎明前的巧克力 FWT - GXZlegend - 博客园 f[i][xor],考虑优化暴力,暴力就是FWT xor一个多项式 整体处理 (以下FWT代表第一步) F ...
- C# Winfrom 进程&多线程
进程: 首先需要引用命名空间: using systemDiagnostics; 最简单的打开进程的方法,进程名并不是汉字: Process.start("calc");//cla ...
- JAVA版本8u171与8u172的区别
用了java 7好几年了,今天闲来无事,想升级到 java 8,到官网下载的时候发现JAVA放出了8u171与8u172两个版本. 什么情况? 百度一下找到答案:https://blog.csdn.n ...
- 第十一篇- 实现APK打开文件功能
MainActivity.java package com.example.aimee.aimeetest3; import android.content.Context; import andro ...
- 查看已安装tensorflow版本
http://blog.csdn.net/u011961856/article/details/76861052 由于tensorflow版本不同,可能一些函数的调用也有变换,这时候可能需要查看ten ...
- JavaScript 正整数正则表达式
function testNumber(){ var yourinputValue=$("#yourinputId").val(); var reg = /^[1-9]\d*$/ ...
- gradle下载jar包
使用IntelliJ IDEA+gradle的时候,有时用到的是公司的jar包,如果在外面就无法访问仓库,因此试着下载所需要的jar包到电脑上.然后发现原来gradle已经缓存到本地上了,可用如下方式 ...
- MooFest POJ - 1990 (树状数组)
Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...