zoukankan      html  css  js  c++  java
  • struts2自定义拦截器一——模拟登陆权限验证

    1、http://localhost:8083/struts2/user.jsp 表示用户已登陆,存放session对象

    2、http://localhost:8083/struts2/quit.jsp 表示用户已退出,移除session对象

    3、http://localhost:8083/struts2/login/addUIHelloWorld.do  如果session存在则往下执行,否则提示“你没有权限执行该操作”

    4、http://localhost:8083/struts2/login/executeHelloWorld.do  如果session存在则往下执行,否则提示“你没有权限执行该操作”

       

    代码

    user.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    request.getSession().setAttribute(
    "user", "ljq");
    %>

    用户已经登录

                

    quit.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    request.getSession().removeAttribute(
    "user");
    %>

    用户已经退出登录

                  

    Action类

    package com.ljq.action;

    public class HelloWorldAction {
    private String message;

    public String addUI() {
    this.message = "addUI";
    return "success";
    }

    public String execute() throws Exception {
    this.message = "execute";
    return "success";
    }

    public String getMessage() {
    return message;
    }

    public void setMessage(String message) {
    this.message = message;
    }
    }

                     

    权限类

    package com.ljq.interceptor;

    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.Interceptor;

    /**
    * 限制没有登录的用户进入访问页面
    *
    *
    @author jiqinlin
    *
    */
    @SuppressWarnings(
    "serial")
    public class PermissionInterceptor implements Interceptor {

    public void destroy() {
    }

    public void init() {
    }

    public String intercept(ActionInvocation invocation) throws Exception {
    Object user
    = ActionContext.getContext().getSession().get("user");
    // 如果user不为null,代表用户已经登录,允许执行action中的方法
    if (user != null){
    return invocation.invoke();
    }
    ActionContext.getContext().put(
    "message", "你没有权限执行该操作");
    return "success";
    }

    }

          

    struts.xml配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

    <struts>
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.action.extension" value="do" />

    <package name="login" namespace="/login" extends="struts-default">
    <interceptors>
    <!-- 自定义拦截器 -->
    <interceptor name="permission" class="com.ljq.interceptor.PermissionInterceptor" />
    <!-- 配制默许的拦截器到拦截器栈 -->
    <interceptor-stack name="permissionStack">
    <!-- 此处先后顺序好像没影响哦,我尝试过是没影响的 -->
    <interceptor-ref name="permission" />
    <interceptor-ref name="defaultStack" />
    </interceptor-stack>
    </interceptors>
    <!-- 配置默认的拦截器 -->
    <default-interceptor-ref name="permissionStack" />
    <!-- 全局变量 -->
    <global-results>
    <result name="success">/WEB-INF/page/message.jsp</result>
    </global-results>
    <action name="*HelloWorld" class="com.ljq.action.HelloWorldAction"
    method
    ="{1}">
    <!-- <interceptor-ref name="permissionStack" /> -->
    </action>
    </package>

    </struts>
  • 相关阅读:
    [LeetCode] 131. 分割回文串
    [LeetCode] 130. 被围绕的区域
    [LeetCode] 128. 最长连续序列
    [LeetCode] 129. 求根到叶子节点数字之和
    转:阿里巴巴集团技术丛书——淘宝一线团队实践
    转:开源知识库
    转:php使用websocket示例详解
    阿里巴巴上市背后的技术力量
    转:php中实现精确设置session过期时间的方法
    转:Java程序员最常用的8个Java日志框架
  • 原文地址:https://www.cnblogs.com/linjiqin/p/1988797.html
Copyright © 2011-2022 走看看