AJAX在静态页面中实现权限控制的方法参考
2014-04-08 19:14
585 查看
在静态页面的模版页中写一段javascript代码,用来发送请求到服务器,在服务器端写一段代码用来检查用户是否登陆,然后返回一个结果给这个html页面,html页面根据返回的结果决定是显示还是转到登陆页面强制用户登陆,到此,问题的解决思路应该明了了,下面来看看实现的代码:
HTML模版页TemplateRules.html代码:
由于模版页比较长,这里只登出AJAX代码部分,即<Body>标签前面的部分
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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=newActiveXObject("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的长度),这样就可以进行判断了
var str = xmlhttp_request.responseText;//将服务器返回的字符串写到页面中ID为message的区域
if(str.length>583)
{
//self.location="../login.aspx";
location.href='../Login.aspx';
}
} else {
alert(http_request.status);
}
接下来就是服务器端用来检测是否登陆的页面checklogin.ascx的代码(很简单):
using System;
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模版页生成的规则就可以进行用户权限控制了
HTML模版页TemplateRules.html代码:
由于模版页比较长,这里只登出AJAX代码部分,即<Body>标签前面的部分
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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=newActiveXObject("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的长度),这样就可以进行判断了
var str = xmlhttp_request.responseText;//将服务器返回的字符串写到页面中ID为message的区域
if(str.length>583)
{
//self.location="../login.aspx";
location.href='../Login.aspx';
}
} else {
alert(http_request.status);
}
接下来就是服务器端用来检测是否登陆的页面checklogin.ascx的代码(很简单):
using System;
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页面中实现权限控制的应用
- 《Spring Security3》第五章第二部分翻译上(实现授权精确控制的方法——页面级权限)
- 《Spring Security3》第五章第二部分翻译下(实现授权精确控制的方法——页面级权限)
- 让aspx页面自主控制调用记录的数量,类型,随时更改,不用重新编译的实现方法
- 一小段JS代码实现静态页面点击数的自动更新(使用AJAX)
- jQuery封装一个方法实现监控页面所有ajax请求
- 通过img标签调用实现静态页面访问次数统计的简单方法
- Ajax 实现静态刷新页面 带加载旋转图片
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
- Ajax实现前台页面调用后台方法(mvc)
- asp+ajax实现静态页面分页的代码
- JAVAWEB开发之Servlet3.0新特性的使用以及注解的详细使用和自定义注解的方法、动态代理的使用、利用动态代理实现细粒度的权限控制以及类加载和泛型反射
- ASP.NET MVC 中实现基于角色的权限控制的处理方法
- 使用ajax技术实现txt弹出在页面上的方法
- nginx用cookie控制访问权限实现方法
- Ajax方法实现登录页面
- java servlet 几种页面跳转的方法,需要的朋友可以参考一下 在访问网页的过程中,页面自动刷新、跳转和重定向是经常用到的,这里就说说在Java中是如何实现这些功能的! 一、页面自动刷新
- Bootstrap tab选项卡实现AJAX加载不同的JSP页面的方法
- Ajax方式实现定期更新页面某块内容的方法
- Ajax获取数据然后显示在页面的实现方法