拦截对该服务器所有的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 读取命令请求 ...
随机推荐
- LINQ的基础使用方法
//新建一个项目 //项目下新建一个App_Code文件夹 //在文件夹内添加一个LINQ TO SQL,这个操作就相当于创建了一个实体类 //连接数据库后把表拖入到服务器资源管理器中 //创建数据访 ...
- python中深拷贝和浅拷贝
python中所谓浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝. 首先,对赋值操作我们要有以下认识: 赋值是将一个对象的地址赋值给一个变量,让变量指向该地址( 旧瓶装旧酒 ). 修改不可变 ...
- bzoj3331 压力(圆方树)
题目链接 圆方树 圆方树就是对于联通无向图中的每一个点双新建一个方点,与点双中的每个点连一条边,然后将原来的边删去.将原来的点看作圆点,新建的点看作方点.所以叫做圆方树. 性质 1.圆方树肯定是棵树( ...
- 第二十二节,TensorFlow中的图片分类模型库slim的使用、数据集处理
Google在TensorFlow1.0,之后推出了一个叫slim的库,TF-slim是TensorFlow的一个新的轻量级的高级API接口.这个模块是在16年新推出的,其主要目的是来做所谓的“代码瘦 ...
- unittest的使用一
selenium: (1).firefox官方下载驱动geckodriver,windows:放在\python36或者是27的目录下 Mac: /usr/local/bin (2).firefox的 ...
- 【优秀的Sketch插件】PaintCode for Sketch for Mac 1.1
[简介] PaintCode for Sketch 是一款结合了PaintCode和Sketch两款软件强大功能的插件,今天和大家分享最新的1.1版本,支持Sketch 40+版本,这个插件能够让你的 ...
- 新买苹果电脑,mac系统中小白应该了解哪些东西?
本文旨在分享新买了mac电脑,应该做哪些设置,帮助苹果电脑小白轻松上手使用mac电脑,当然,新电脑肯定是需要安装各种软件,这里,小编推荐一下可以看看小编写的mac软件装机必备Mac 装机必备软件推荐, ...
- VirtualBox使用入门
VirtualBox使用入门 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能玩虚拟机的人多少是懂点运维的,因此我就不跟大家介绍啥事虚拟化了.关于虚拟化产品大家用的应该也都大同小异 ...
- centos 7.4 安装gitlab
centos 7.4 安装gitlab #curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/scrip ...
- log4j、log4j2和slf4j的基本使用
一.什么是log4j.log4j2和slf4j Log4j是Apache的一个开源项目,通过配置来控制日志的输出.主要是控制日志的输出级别.输出位置和输出内容格式. Log4j2是在log4j框架的基 ...