html 处理
近期做了一个后台管理网站,后台页面都是Html页面,里面再通过ajax访问后台服务。要做到比较好的用户体验,即:如果用户没有登录或没有权限马上调到登录页面,而不是等到页面加载后再ajax时判断是否登录或权限再做跳转(这样给用户体验不好)。该如果实现呢?
首先想到的是自定义httpModule,拦截html请求,做权限认证。
本地调试没有问题,发布到IIS6后发现包含html文件再内的所有的静态资源都没有经httpModule处理,后来发现静态资源 IIS6直接返回,不通过asp.net管道处理。IIS7的集成模式默认所有的请求都会进入asp.net管道。这个问题如何解决呢?答案是通过配置IIS和web.config配置文件实现静态资源由asp.net管道处理。
一、首先iis6中右键站点属性->主目录->配置->应用程序配置
我用的是.net4.0,可执行文件填写的是c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll,如果是2.0填写2.0的aspnet_isapi.dll即可。
动作可根据自己的需要定制。GET、POST、PUT、DELETE等
确认文件是否存在不勾选
二、web.config配置
1、system.web节点下的httpHandlers添加html处理器映射
- <system.web>
- <httpHandlers>
- <add verb="GET" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
- </httpHandlers>
- </system.web>
2、system.web节点下的httpHandlers添加html编辑映射
- <system.web>
- <compilation>
- <buildProviders>
- <add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
- </buildProviders>
- </compilation>
- </system.web>
3、自定义httpModule过滤html,做相关功能验证
- <system.web>
- <httpModules>
- <add name="accountModule" type="tracePlatForm.WebApp.modules.accountModule"/>
- </httpModules>
- </system.web>
httpModule关键代码:
- public class accountModule : IHttpModule,IReadOnlySessionState
- {
- public void Dispose()
- {
- }
- public void Init(HttpApplication context)
- {
- context.BeginRequest += new EventHandler(checkLogin);
- }
- private void checkLogin(object sender, EventArgs e)
- {
- //自己的处理
- }
- }
至此所有必须的配置都已完成,你的站点可以过滤html文件请求了。
随机推荐
- 用thinkphp连接mysql数据库
一.设置mysql数据库的参数 thinkphp\Application\Home\Conf\config.php <?php return array( //'配置项'=>'配置值' ' ...
- Android相机基础基于camera2API
前言 最近,在使用Android做一个照相机的开发.因为不能使用系统提供的相机应用,所以只能自己写一个.Android以前提供相机的api叫camera,不过在level 21被Google抛弃了.网 ...
- Python 访问dict
访问dict 1:可以if判断元素是否存在 2:dict.get('key')我们已经能创建一个dict,用于表示名字和成绩的对应关系:d = { 'Adam': 95, 'Lisa': 85, 'B ...
- form表单元素设置只读
form表单元素设置只读 CreateTime--2017年5月5日11:42:41 Author:Marydon 1.设置文本框只读 <!-- 方法一:简写 --> <inpu ...
- 转:configure/make/make install的作用 linux 安装 卸载 make uninstall
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤. ./configure 是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不是需要CC或GC ...
- PHP-"php://(类型)"访问各个输入/输出流以及全局变量$HTTP_RAW_POST_DATA讲解
$_POST $HTTP_RAW_POST_DATA php://input 先来讲以上三者的区别: $_POST:以关联数组方式组织提交的数据, 并对原数据进行编码处理(urldecode)和编码转 ...
- HTML-IE6兼容性问题及IE6常见BUG详细汇总
点评:IE6的兼容性问题一直都是前端工程师的恶梦,为了早早脱离这种困境,本文整理了一些相关兼容性的知识,感兴趣的朋友可以参考下哈,希望可以帮助到你- 1.终极方法:条件注释 <!--[if lt ...
- python ichat使用学习记录
1.OSError: [WinError -2147221003] 找不到应用程序: 'D:\\python\\ichat\\qrcode.jpg' 原因是该库中没有windows系统如何打开二维码图 ...
- JEECG技术总结
1.用户数据迁移时,必须在表t_s_base_user和t_s_user中都插入数据才会在页面显示.2.执行sql语句: String sql = "select count(id) fro ...
- getconf命令【一天一个命令】
我们时常需要查询系统相关的信息,比如页面大小,整数大小之类,如果编写程序去计算会比较繁琐,这里有一个很有用的命令,可以用来获取系统相关信息.它就是getconf. $ getconf PAGE_S ...