AJAX在静态HTML页面中实现权限控制的应用
来源:互联网 发布:js获取textarea的内容 编辑:程序博客网 时间:2024/05/16 05:56
最近做了一个铁路局的行车规则发布系统,有点类似于一个新闻发布系统.因为数据量大,为了加快访问的速度,我把里面的规则在后台添加时生成了静态页面保存在硬盘上, 这样每次访问就不必要去数据库取数据了.但是一个问题出现了,就 是这些规则都需要登陆之后才能访问,没登陆是不允许访问的,所以必须在这些静态页面上进行权限的控制,那么在静态页面中怎么判断用户是否登陆了呢......??
最近刚学了点AJAX,这时就派上用场了,呵呵,AJAX可以异步发送请求到服务器,然后返回一个结果,呵呵,那么这正好是我需要的,解决思路如下:
在静态页面的模版页中写一段javascript代码,用来发送请求到服务器,在服务器端写一段代码用来检查用户是否登陆,然后返回一个结果给这个html页面,html页面根据返回的结果决定是显示还是转到登陆页面强制用户登陆,到此,问题的解决思路应该明了了,下面来看看实现的代码:
HTML模版页TemplateRules.html代码:
由于模版页比较长,这里只登出AJAX代码部分,即<Body>标签前面的部分
<script type="text/javascript" language="javascript">
//创建适用用与多种浏览器的XMLHttpRequest对象的函数
function getXMLRequester( )...{
var xmlhttp_request = false;
try...{
if( window.ActiveXObject )...{
for( var i = 5; i; i-- )...{
try...{
if( i == 2 )...{xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" );
}else...{xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
xmlhttp_request.setRequestHeader("Content-Type","text/xml");xmlhttp_request.setRequestHeader("Content-Type","gb2312");
}
break;}
catch(e)...{
xmlhttp_request = false;
}
}
}else if( window.XMLHttpRequest )...{
xmlhttp_request = new XMLHttpRequest();
if (xmlhttp_request.overrideMimeType) ...{
xmlhttp_request.overrideMimeType('text/xml');
}
}
}
catch(e)...{
xmlhttp_request = false;
}
return xmlhttp_request ;
}
function IDRequest() ...{
//定义收到服务器的响应后需要执行的JavaScript函数
url='CheckLogin.aspx'//定义网址参数
//alert(url);
xmlhttp_request=getXMLRequester();//调用创建XMLHttpRequest的函数
xmlhttp_request.onreadystatechange = doContents;//调用doContents函数
xmlhttp_request.open('POST', url, true);
xmlhttp_request.send(null);
}
function doContents() ...{
if (xmlhttp_request.readyState == 4) ...{// 收到完整的服务器响应
if (xmlhttp_request.status == 200) ...{//HTTP服务器响应的值OK
var str = xmlhttp_request.responseText;//将服务器返回的字符串写到页面中ID为message的区域
if(str.length>583)
...{
//self.location="../login.aspx";
location.href='../Login.aspx';
}
} else ...{
alert(http_request.status);
}
}
}
IDRequest();
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>$Chapter$-->>$Order$-->>$Title$</title>
<link href="../StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
此处要提一下:上面文件中的以下代码部分是根据服务器端返回结果决定是否强制登陆的关键部分,因为我们是通过xmlhttp_request.responseText;来看返回结果的,而这个返回文本是服务器端页面的html,所以在此处我们通过返回的这个文本长度来判断服务器端返回的是已登陆还是未登陆,如果已登陆则长度肯定小于583,(当然这个长度会因为每个人的做法不同而不同,可根据实际情况来确定一下服务器端的文件HTML的长度),这样就可以进行判断了
if(str.length>583)
...{
//self.location="../login.aspx";
location.href='../Login.aspx';
}
} else ...{
alert(http_request.status);
}
接下来就是服务器端用来检测是否登陆的页面checklogin.ascx的代码(很简单):
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class CheckLogin : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
...{
if (Request.Cookies["UserInfo"] == null || Request.Cookies["UserInfo"].Values["UserName"].ToString() == "")
...{
Response.Write("111111111111111111111111111111111111111111");//输出不同长度的字符串
}
else
Response.Write("1");
}
}
就这样,通过上面的HTML模版页生成的规则就可以进行用户权限控制了
- AJAX在静态HTML页面中实现权限控制的应用
- AJAX在静态页面中实现权限控制的方法参考
- html + ajax 如何实现页面静态化
- 如何在应用系统中实现数据权限的控制功能
- 如何在应用系统中实现数据权限的控制功能
- 权限管理系统 页面权限粒度控制设计 GUID在数据库系统的应用
- 静态页中利用AJAX.NET实现无刷新页面(高级应用)
- 静态页中利用AJAX.NET实现无刷新页面(高级应用)
- Android 在应用中,跳转到该应用的详细设置页面,设置权限页面
- 在HTML中增加meta name="viewport"控制页面不随着放大缩小变形的实现方式
- 在HTML中增加meta name="viewport"控制页面不随着放大缩小变形的实现方式
- 在静态HTML文件中使用微软ASP.NET AJAX (1) -- 实现GET方法
- 在html 静态页面中引用外部页面 Include
- 在html 静态页面中引用外部页面 Include
- 静态HTML页面的访问量统计实现
- [Ajax]便于在html页面中引用javascript显示后台数据的一段ajax代码
- 在html页面用ajax的简单应用通过javascript得到数据库中的图片路径并在表格中显示出来
- 在AD中实现应用系统的权限角色简述
- spring,ioc模式与ejb3的SLSB实现
- JAVA--操作Execl
- java.lang.OutOfMemoryError: Java heap space问题
- 如何跟进止损的设置方法
- 看看玻璃代码,就知道你的车窗玻璃是谁造的
- AJAX在静态HTML页面中实现权限控制的应用
- C++中的引用
- asp.net 路径问题
- asp.net 利用js 脚本 交互前后台
- Nutch 笔记(二):Craw more urls and Recrawl(收藏)
- JS常用正则表达式
- Tiny Download&&Exec ShellCode
- ANSI/ISO C++ Professional Programmer's Handbook 4
- 单击按钮或执行一些其他操作会导致回发