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>
  • 相关阅读:
    RabbitMQ 内存控制 硬盘控制
    Flannel和Docker网络不通定位问题
    kafka集群扩容后的topic分区迁移
    CLOSE_WAIT状态的原因与解决方法
    搭建Harbor企业级docker仓库
    Redis哨兵模式主从持久化问题解决
    mysql杂谈(爬坑,解惑,总结....)
    Linux的信号量(semaphore)与互斥(mutex)
    SIP协议的传输层原理&报文解析(解读rfc3581)(待排版) && opensips
    SIP协议的传输层原理&报文解析(解读RFC3261)(待排版)&&启动
  • 原文地址:https://www.cnblogs.com/linjiqin/p/1988797.html
Copyright © 2011-2022 走看看