使用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 ...
随机推荐
- 原生js实现选项卡
html代码: <div class="tab"> <ul> <li class="selected">图片</li& ...
- iOS UI-手势(Gesture)
#import "ViewController.h" @interface ViewController ()<UIActionSheetDelegate> @prop ...
- List原理
ArrayList: ArrayList是一个可变数组实现,实现了List接口的所有方法,并允许存取null值.ArrayList基本上等同与Vector,但它只对writeObject()和read ...
- dubbo的ExtensionLoader
了解4个概念:接口,实现类,wrapper,adaptive. 扩展是接口实现类被wrap之后的对象,adaptive扩展是动态生成的类(例如Dubbo$Adaptive类). dubbo框架为接口指 ...
- Intel DAAL AI加速 ——传统决策树和随机森林
# file: dt_cls_dense_batch.py #===================================================================== ...
- 标签传播算法(Label Propagation)及Python实现
众所周知,机器学习可以大体分为三大类:监督学习.非监督学习和半监督学习.监督学习可以认为是我们有非常多的labeled标注数据来train一个模型,期待这个模型能学习到数据的分布,以期对未来没有见到的 ...
- C++实现String容器的基本功能
本文只实现String类的构造函数.析构函数.赋值构造函数和赋值函数,其他操作不再详述,一般的笔试面试基本上也只会要求实现这四个函数的功能. #include <iostream> usi ...
- POJ 2485 最小生成树
2333333333 又是水题.prim模板直接水过.求最小生成树里的最大的边的权值. 附代码:// 如果我木猜错的话.是要求最小生成树的最大边值. #include<stdio.h>#i ...
- Awk 从入门到放弃(5)– Awk模式(Pattern)之一
转:http://www.zsythink.net/archives/1426
- 【转】EDNS
转自:https://www.cnblogs.com/cobbliu/p/3188632.html 随着业务的复杂化和多样化,RFC1035中定义的DNS消息格式和它支持的消息内容已经不足以满足一些D ...