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页面提示用户重新登陆。完成拦截器的权限控制。

  • 相关阅读:
    如何去除文件的打开方式,恢复默认打开方式如何消除默认打开方式
    vbs和qtp一些脚本
    忘记oracle用户名密码怎么办?
    网关
    子网掩码的作用和设置方法
    三层交换机配置说明(华为S5700设置三个网段互通)
    QTP连接MYSQL数据库方法
    批量创建IP方法
    MongoDB中的一些坑( 2.4.10 版本)
    java的BASE64Encoder,BASE64Decoder加密与解密
  • 原文地址:https://www.cnblogs.com/moonfans/p/3166372.html
Copyright © 2011-2022 走看看