使用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 ...
随机推荐
- 5-15 devise(git指南,部分认为重要的内容的译文)
git指南:https://github.com/plataformatec/devise 维基百科上有how to 的很多文章. Stackoverflow有大量问题的答案. 全的文档devise: ...
- jenkins+python+kubectl实现批量更新k8s镜像
一.jenkins使用官方镜像(官方镜像默认是jenkins用户,权限太低) 因此通过dockerfile重新改为root启动 FROM jenkins/jenkins:lts MAINTAINER ...
- HDU1789时间贪心
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- js传入和传出参数乱码
向js传入参数乱码问题 第一种解决方法 当Js中输出内容中包含中文,可能会导致出现乱码. 如何解决: 1. 设置页面编码: Html代码 <meta http-equiv="Conte ...
- html5阴影
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> < ...
- Jpa实体类生成图解
Jpa实体类生成图解 创建连接 创建项目
- MySQL Server类型之MySQL客户端工具的下载、安装和使用(博主推荐)
本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...
- 快速切题 sgu 111.Very simple problem 大数 开平方 难度:0 非java:1
111.Very simple problem time limit per test: 0.5 sec. memory limit per test: 4096 KB You are given n ...
- SpingBoot三——基础架构
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:https://www.cnblogs.com/by-dream/p/10492073.html 继续上一节,为了更好的开发,现将 ...
- JS底层知识理解之执行上下文篇
JS底层知识理解之执行上下文篇 一.什么是执行上下文(Execution Context) 执行上下文可以理解为当前代码的执行环境,它会形成一个作用域. 二.JavaScript引擎会以什么方式去处理 ...