Board logo

标题: sturts配置登陆拦截器(1) [打印本页]

作者: look_w    时间: 2019-4-20 14:30     标题: sturts配置登陆拦截器(1)

一般页面登录拦截有两种思路:
客户端拦截

一种是写在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>




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0