一般页面登录拦截有两种思路:
客户端拦截
一种是写在js中 通过一个变量来判断用户是否登录 未登录则退出
代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
Object sessionValues = request.getSession().getAttribute("uflag");
%>
<script src="<%=basePath %>/scripts/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
// 登录判断代码
var sessionValuesTemp = <%=sessionValues%>;
function valiUser() {
if (sessionValuesTemp !=1) {
window.location.href = "<%=basePath%>login.jsp";
}
}
$(function() {
valiUser();
});
</script>
但是客户端拦截容易被用户在浏览器中做手脚,影响到安全性
所以 安全性要求高的 我们都会在服务器端进行验证
服务端spring+sturts登录拦截
原理是利用sturts的过滤功能,在我们配置的路径下的请求都会先经过我们的验证类,如果验证成功才继续跳转。
代码如下:
sturts.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!-- 登陆拦截器 -->
<package name="login-default" extends="json-default">
<interceptors>
<interceptor name="loginStack" class="authorityBean"> </interceptor>
<!-- 拦截器栈 -->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="loginStack" />
</interceptor-stack>
</interceptors>
<!-- 拦截此包下的所有 -->
<default-interceptor-ref name="loginStack"></default-interceptor-ref>
<!-- 拦截器拦截后跳转到此登陆页面 -->
<global-results>
<result name="login">/login.jsp</result>
</global-results>
</package>
<!-- 此包下 包含了 不需要登陆 一级页面 -->
<package name="staticPage" extends="json-default" namespace="/">
<action name="login" class="login" >
<interceptor-ref name="json">
<param name="root">loginParams</param>
</interceptor-ref>
<result type="json">
<param name="root">ajaxResult</param>
</result>
<result name="login">/login.jsp</result>
</action>
</package>
<!-- 用户报告 -->
<package name="reportPackage" extends="login-default" namespace="/report">
<action name="testJson" class="testAction">
<result type="json"></result>
</action>
<action name="indexList" method="indexList" class="queryAction">
<result name="success">reports/indexlist.jsp</result>
</action>
</package> |