JSF2拦截器

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.zople.filter;

import com.zople.login.bean.LoginUserSession;
import com.zople.login.bean.UserSessionBean;
import com.zople.util.EnSystemConfig;
import javax.faces.application.Application;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *@描   述: JSF拦截器

 *@ author:  yuzhi2217@yuxia2217@163.com
 *@version: 1.0
 */
public class ActionFilter  implements PhaseListener {
   
      final Logger logger = LoggerFactory.getLogger(ActionFilter.class);  //日志管理
   
    public ActionFilter(){
       }


    @Override
    public void afterPhase(PhaseEvent event) {
        
        PhaseId phaseId = event.getPhaseId();
       
//            System.out.println("phaseId: " + phaseId);
//               System.out.println("输出拦截=========2");
//       
            //生命周期
        if (phaseId == PhaseId.RESTORE_VIEW ) {
           
           
            //|| phaseId == PhaseId.INVOKE_APPLICATION) {

            FacesContext currentContext = FacesContext.getCurrentInstance();

            String viewId= currentContext.getViewRoot().getViewId();
           
//            System.out.println("dddddddddddddd==="+viewId);

            //ViewId 就是我们需要的路径,类似URL,如/noPermission.xhtml
           
            if(null!=viewId&&viewId.contains(EnSystemConfig.EN_ADMIN_URL)){
            String isEnabled = "false";
           
            isEnabled=loggedIn(viewId);
           if(isEnabled.equals("NoPurview")){
               // 没有权限
                //   logger.info("NoPurview");
                   gotoNoPermissionPage();
           }else if(isEnabled.equals("false")){
               //没有登录
         //      logger.info("没有登录");
               gotoNoSessionPage();
           }
               
               
            }

//            System.out.println("afterPhase: " + viewId);
//             System.out.println("phaseId: " + phaseId);
//            System.out.println("PhaseId.RESTORE_VIEW==="+ PhaseId.RESTORE_VIEW);
//            System.out.println("PhaseId.INVOKE_APPLICATION=="+PhaseId.INVOKE_APPLICATION);
 
        }
        
    }
   
   
        /*没有Session**/
       private void gotoNoSessionPage() {
            FacesContext currentContext = FacesContext.getCurrentInstance();
              NavigationHandler nh = currentContext.getApplication().getNavigationHandler();
            nh.handleNavigation(currentContext, null, "logout");
    }
   
    /* 没权限 */
     private void gotoNoPermissionPage() {
              FacesContext currentContext = FacesContext.getCurrentInstance();
              NavigationHandler nh = currentContext.getApplication().getNavigationHandler();
              nh.handleNavigation(currentContext, null, "noPurview");

    }
   
   

    @Override
    public void beforePhase(PhaseEvent event) {
//           System.out.println("输出拦截===========1");
    }

    @Override
    public PhaseId getPhaseId() {
             return PhaseId.ANY_PHASE;
    }

   
    //验证是否已经登陆
    private String loggedIn(String url) {
             UserSessionBean  userSessionBean = LoginUserSession.getInstance().getSessionBean(EnSystemConfig.EN_USER_SESSION);
            if(null!=userSessionBean&&null!=userSessionBean.getUserId()){
//                 System.out.println("输出SessionName========sdfsdfsd==f========="+url);
               if(null!=userSessionBean.getMemberLevels()){
                   if(!userSessionBean.getMemberLevels().getIsBuy()&&url.contains(EnSystemConfig.EN_IS_BUY_URL)){
                       return "NoPurview";
                   }
                   if(!userSessionBean.getMemberLevels().getIsMerchants()&&url.contains(EnSystemConfig.EN_IS_MERCHANTS)){
                       return "NoPurview";
                   }
                  if(!userSessionBean.getMemberLevels().getIsMachining()&&url.contains(EnSystemConfig.EN_IS_MACHINING)){
                       return "NoPurview";
                   }
                  
               }
                return "true";
            }
           return "false";
    }


}

 

 

配置文件

 

faces-config.xml

 

      <lifecycle>
    <phase-listener>com.zople.filter.ActionFilter</phase-listener>
    </lifecycle> 
   
    <navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
      <from-outcome>logout</from-outcome>
      <to-view-id>/pages/member/login_out.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
      <from-outcome>noPurview</from-outcome>
      <to-view-id>/pages/error/purview.xhtml</to-view-id>
    </navigation-case>
    </navigation-rule>

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值