使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现
接上面的文章,上面的主要是进行html 页面自己进行处理。但是对于进行asp.net 的开发者以及其他的就显的不太好了。
我的实现方式是使用IHttpModule 进行对于用户请求的带有参数的js文件,进行处理 ,主要是获取参数,当然在其中进行一些处理可以制作一个SSO的应用,
如果需要处理的高速,可以使用缓存,我个人的建议是不要使用asp.net 自带的缓存,而是使用一些开源的缓存,不如memcached windows平台也是可以使用的,
代码如下:
1,设计自定义的IHttpModule。
public class Myhttpmodel:IHttpModule {
public void Dispose() {}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
}
void context_AcquireRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
string tep = context.Request.RawUrl;
if (tep.Contains(".js?"))
{
context.Application["demo"] = tep;
context.Response.Write("<script>alert(" + tep + ")</script>");
}
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
string tep = context.Request.RawUrl;
if (tep.Contains(".js?"))
{
context.Application["demo"] = tep;
}
}
}
代码比较简单就是对于用户请求我们的带有参数js文件进行获取参数值,之后存储在application中进行处理。
IHttpModule 设计完成之后就是进行web config 配置文件的处理,也是比较简单的。
如下:
<httpModules>
<add type="demodlaong.Myhttpmodel" name="HttpModule"/>
</httpModules>
这样每次有请求的时候我们的模块就可以工作了。
2,客户端的js 应用的代码:
<script type="text/javascript" src="http://localhost:3243/Scripts/jquery-1.4.1.js?username=jack&id=8&uid=258" ></script>
也很简单就是加上我们的服务器地址。
3,一个我自己的服务器的测试.
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = Application["demo"].ToString();
}
public dynamic setthing()
{
string tep = Application["demo"].ToString();
string userinfo = tep.Split('?')[1];
dynamic user = new ExpandoObject();
string tep1= userinfo.Replace('=', ':');
string[] list=tep1.Split('&');
var tep2=list[0].Split(':');
var tep3=list[1].Split(':');
var tep4=list[2].Split(':');
user.username=tep2[1].ToString();
user.id = tep3[1].ToString();
user.uid = tep4[1].ToString();
return user;
}
protected void Button2_Click(object sender, EventArgs e)
{
Label2.Text = setthing().username;
}
代码比较简单就是获取application中存储的信息 ,我使用的是.net 4.0 的dynamic 主要是进行测试,实际自选。
服务器测试截图:

4,客户端进行请求之后的调试界面。

一些红色的是自己测试使用的是文件夹中不存在的东西所以是这样的,
服务器端的调试界面。

以上只是自己的一些实践,代码比较简单。对于进行其他编程环境的使用也是类似的,如果在其中使用一些ajax jsonp 跨域技术 就可以实现我们的基于js的SSO了,如果感觉性能不太好 ,可以添加缓存 使用 memcached 、redis等。
如果有些人就是比较喜欢使用javascript 进行开发,并且对于服务器感觉搭建比较麻烦的,可以使用nodejs 简单又好用,熟悉的编程方式,不会为开发者添加太多约束。
使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现的更多相关文章
- 使用rewrite 让php 实现类似asp.net 的IHttpModule 进行带参数js文件的参数获取
asp.net 的IHttpModule 接口具有很大的作用,我们可以使用实现的模块进行全局的控制,但是在学习php 的过程中也想实现类似的功能,查找php 的文档,自己没有找到, 但是我们大家应该知 ...
- 异步加载js文件的方法
# 异步加载js文件 - js的加载默认是同步的,因为js是单线程执行,只能完成一件再执行下一件. - 一些外部引入的js文件可以因为文件太大,在加载资源的过程中会影响dom元素的加载,影响了用户体验 ...
- 在引入的css或者js文件后面加参数的作用
有时候可能会遇到js或者css文件引用后传递参数: css和js带参数(形如.css?v=与.js?v=) <script type=”text/javascript” src=”jb51.js ...
- coding++ :在引入的css或者js文件后面加参数的作用
前沿: 有些小伙伴们在页面(F12)直接对 JS.CSS 文件进行编辑.或者打断点调试的时候 可能会发现 所有的操作都不生效,为什么? 原因可能存在以下情况 有时候可能会遇到js或者css文件引用后传 ...
- 利用WebClient上传参数及文件流到远程ashx服务
原文 利用WebClient上传参数及文件流到远程ashx服务 1 思路: WebClient.UploadFile()方法可以上传文件:UploadData()方法可以上传数据参数:如何合二为一既上 ...
- nodejs 使用express开发获取其他网站引用本站点js文件的参数
nodejs进行站点的开发其性能是很好的,在js 大行其道的天下,使用js基本上可以干好多只要我们能想到的东西,我们可以使用js文件进行用户验证等等. 这次我们就使用express 进行获取其他站点引 ...
- 引入其他服务的JS、和 本地的JS文件,script的属性
==============使用其他服务器引入JS文件,1,减轻服务器压力2,速度快3,可以缓存 cdnjs库,更新比较快https://cdnjs.com/ cdn库 引入JS文件如:jqueryb ...
- 关于更新发布CSS和JS文件的缓存问题
现如今,浏览器大战下,各个浏览器也是拼了命的提高性能,升级JS解析引擎,更好的处理浏览器的页面缓存,让用户的浏览体验更快,占用更小的PC资源.那么,问题就出现在JS和CSS缓存,甚至页面缓存上.至于浏 ...
- 使用Node.JS访问Hyperledger Fabric的gRPC服务
在即将正式发布的Hyperledger Fabric SDK 1.0中,Hyperledger Fabric通过gRPC提供服务接口以取代现有的REST API.本文介绍了如何使用Node.JS访问H ...
随机推荐
- 用Omniauth来Login with Facebook(Go-rails课程)
https://gorails.com/episodes/login-with-facebook?autoplay=1 大概看了一遍,留了视频的截图. https://gorails.com/epis ...
- poj3080kmp或者暴力
The Genographic Project is a research partnership between IBM and The National Geographic Society th ...
- ECharts学习(1)--toolbox(工具栏)
1. toolbox:这是ECharts中的工具栏.内置有导出图片.数据视图.动态类型切换.数据区域缩放.重置五个工具. 2. toolbox中的属性,不包含五个工具.里面最主要的就是feature这 ...
- HDU-4850 Wow! Such String! (构造)
Problem Description Recently, doge starts to get interested in a strange problem: whether there exis ...
- 78. Subsets 90. Subsets II
1. Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset m ...
- IOS8-人机界面指南
[ISUX转译]iOS 8人机界面指南(一):UI设计基础 糖箔糊2014.09.23 文章索引 1.1 为iOS而设计(Designing for iOS) 1.1.1 以内容为核心(Defer t ...
- SQL调优(SQL TUNING)之远程支持完成性能大幅优化
前几天,一个朋友找到我,说一个SQL性能有问题,看看能不能优化,下面为过程: 雪豹 9:35:10 在吗 兰花岛主 15:07:39 忙忘了,有事儿? 雪豹 15:07:49 嗯 雪豹 15:07:5 ...
- k8s集群搭建指南
一.简介 Ansible Docker Docker compose,docker swarm,docker machine Mesos,marathon Kubernetes(占据80%的市场) D ...
- ORA-01034:Oracle not available
ORA-01034:Oracle not available 问题描述:ora-01034常与ora-27101同时出现,都是在登录数据库的时候报该错误 错误原因:出现ORA-01034和ORA-27 ...
- Spring学习笔记之Testing
测试嘛,一般也就两种,一种就是单元测试,另外一个就是集成测试.都是废话 一.单元测试 以前也就是搞个模拟,main函数一写搞定. 现在呢,有了个spring,也有了个推荐规范?这个是个什么东西?什么叫 ...