zoukankan      html  css  js  c++  java
  • 权限控制拦截器的使用方法

    权限控制拦截器是针对需要权限控制的的action所设定的特定的拦截器,避免了在action执行之前重复调用代码。类似与AOP原则可以增强代码的复用性,在特定的 切入点进行权限的控制并且是自动完成的不用action开发人员手动的调用。

    登陆跳转实例如下:

    登陆的action代码如下:

    public String execute() throws Exception {
      ActionContext actionContext=ActionContext.getContext();
      Map session=actionContext.getSession();
      if(this.getUsername().equals("lzhq")&&this.getPassword().equals("123")){
       session.put("username", this.getUsername());
       return SUCCESS;
       
      }else
       return INPUT;
      
     }

    页面跳转的action代码如下:

    public class viewAction extends ActionSupport{

     @Override
     public String execute() throws Exception {
      return SUCCESS;
      
     }

    拦截器类代码如下:

    public String intercept(ActionInvocation invocation) throws Exception {
      ActionContext actionContext=invocation.getInvocationContext();
      Map session=actionContext.getSession();
      String username=(String)session.get("username");
      if(username!=null&&username.equals("lzhq")){
       return invocation.invoke();
       
      }else{
       session.put("tip", "you have not login please login");
       return Action.INPUT;
      }
      }

    登陆成功后跳转到如下页面:

     <body>
       login success you can view the result of the book;<br/>
       <s:a href="view.action">loop</s:a>
      </body>

    跳转成功后跳转到如下页面:

    <body>
        loop success;
      </body>

    如果没有登陆成功直接访问带有跳转超链接的页面可以访问到但是如果点击loop超链接不会跳转到跳转成功页面,因为在viewAction执行之前请求被拦截器获得,处理请求后发现没有在session中找到指定的登陆用户名因此不会将控制权交给下一个拦截器或者viewAction中的execute方法。直接跳转到INPUT页面提示用户重新登陆。完成拦截器的权限控制。

  • 相关阅读:
    docker配置国内加速器
    pwm原理与stm32控制
    【C语言】赋值表达式自增自减逗号表达式
    linux下利用paho.mqtt.c进行mqtt开发 #c编程
    linux下tcp #c编程
    windows下的linux子系统虚拟串口的使用
    linux下搭建mqtt服务器(mosquitto)
    linux下paho.mqtt.c下载安装
    树莓派&mysql数据库
    vscode+mysql数据库编程
  • 原文地址:https://www.cnblogs.com/moonfans/p/3166372.html
Copyright © 2011-2022 走看看