`
cuiyadll
  • 浏览: 204655 次
文章分类
社区版块
存档分类
最新评论

JSF点滴积累--权限验证

jsf 
阅读更多
  通过PhaseListener 可以在一个点上(JSF生命周期的Restore View phase阶段)进行权限验证,从而避免在每个页面或者每个backing bean中判断用户访问权限,造成过多的冗余代码和管理上的混乱。
    步骤一:在faces-config.xml中注册 PhaseListener

<lifecycle>
<phase-listener>com.loffler.copycenter.controller.LoggedInCheck</phase-listener>
</lifecycle>
    步骤二:创建实现PhaseListener接口的LoggedInCheck 类。getPhaseId 方法被用来告诉PhaseListener在那一个JSF生命周期阶段该类会被调用。本例使用PhaseId.RESTORE_VIEW.
  

package com.mowyourlawn.controller;

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;

public class LoggedInCheck implements PhaseListener {

    public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }

    public void beforePhase(PhaseEvent event) {
    }

    public void afterPhase(PhaseEvent event) {
        FacesContext fc = event.getFacesContext();

        // Check to see if they are on the login page.

        boolean loginPage =
          fc.getViewRoot().getViewId().lastIndexOf("login") > -1 ? true : false;
        if (!loginPage && !loggedIn()) {
            NavigationHandler nh = fc.getApplication().getNavigationHandler();
            nh.handleNavigation(fc, null, "logout");
        }
    }

    private boolean loggedIn() {
        return LoginController.loggedIn().booleanValue()c;
    }
}
    步骤三:在 faces-config.xml 文件中注册logout导航规则,对应上面的代码:nh.handleNavigation(fc, null, "logout")。
<navigation-rule>
  <from-view-id>*</from-view-id>
    <navigation-case>
      <from-outcome>logout</from-outcome>
      <to-view-id>/login.jsp</to-view-id>
    </navigation-case>
</navigation-rule>
    注:在JSF中也可以利用Filter进行权限验证,但是由于导航方式中Forward和Redirect的不同,往往通过getRequestURI得到的URI不一定是当前的View,因此利用PhaseListener实现权限验证优于Filter.

引自:http://java.chinaitlab.com/ServletJsp/762345.html
分享到:
评论

相关推荐

    jsf-api-2.0.3.jar.zip_jsf api_jsf jar包_jsf-api-2.0.3.jar_jsf-api

    在部署包含JSF功能的Web应用到Tomcat时,确保所有必要的库,如`jsf-api.jar`(通常与`jsf-impl.jar`一起使用,提供JSF实现),被正确地添加到Tomcat的类路径(ClassPath)中是至关重要的。如果缺失这些库,应用程序...

    JSF-AV-rules.rar_JSF AV rule_JSF-AV_JSF-AV-rules_航空C++编程规范

    《JSF-AV-rules.rar》是一个压缩包文件,包含了航空C++编程规范,这个规范主要针对的是在航空系统开发中使用C++编程时应当遵循的一系列规则和标准。航空系统的软件开发对于安全性、可靠性和可维护性有着极高的要求,...

    jsf-api-2.0.jar

    这是jsf-api-2.0.jar,为了使用方便传上来.只是个jar包.

    jboss-ajax4jsf-1.1.1-src

    【标题】"jboss-ajax4jsf-1.1.1-src" 是一个开源项目,主要涉及Ajax4jsf框架的源代码版本,版本号为1.1.1。Ajax4jsf是针对JavaServer Faces (JSF) 技术的一个扩展,它允许开发者在JSF应用中无缝集成Ajax功能,提升...

    参考合同-集体林权流转合同(JSF-2015-2602).zip

    《集体林权流转合同》(JSF-2015-2602)是针对我国农村集体林地使用权和林木所有权转移的一种规范性法律文件。这份文档,以.docx格式存储在压缩包内,旨在为涉及集体林权交易的各方提供一个标准化的合同模板,确保...

    jsf-impl-2.0.0-src.jar

    jsf-impl-2.0.0源代码文件, jsf-impl-2.0.0-SNAPSHOT-sources.jar

    jsf-api-1.2

    综上所述,"jsf-api-1.2"提供了丰富的API和功能,使开发者能够高效地构建和维护企业级的Java Web应用程序。通过对组件、事件、Managed Beans、视图状态、转换验证、导航、国际化以及错误处理的理解和熟练运用,...

    jsf-impl-1.2_15.jar

    这是jsf-impl-1.2_15.jar,为了使用方便传上来.只是个jar包.

    jsf-spring-4.0.3

    标题"jsf-spring-4.0.3"表明这是一个关于JSF与Spring整合的特定版本,4.0.3可能指的是Spring框架的一个版本,这通常意味着该资源包含了使得这两个框架能够协同工作的配置和示例代码。 在描述中提到的"jsf他spring...

    jsf-spring-boot-starter-2.2.6.zip

    【标题】"jsf-spring-boot-starter-2.2.6.zip" 是一个基于Java Server Faces (JSF) 和Spring Boot的启动器项目,版本为2.2.6。这个压缩包通常包含了用于快速搭建JSF应用在Spring Boot环境中的必要组件和配置。 ...

    JSF-api-1.2_14-sources.jar

    JSF-api-1.2_14-sources.jar,提供了jsf使用时的多种内部类。

    一个简单的jsf例子------JSF2学习笔记1

    - `jsf-impl.jar` 和 `jsf-api.jar` 包含了JSF2的核心实现和API,供应用程序使用。 - `commons-collections-3.1.jar` 提供了集合操作的扩展,常常用于辅助处理数据。 - `commons-beanutils-1.8.0.jar` 提供了对...

    jsf-api-1.2-12.jar

    jsf-api-1.2-12.jar

    jsf-spring-hibernate整合

    本项目"jsf-spring-hibernate整合"旨在将这三大技术进行无缝集成,采用基于注解的方式来简化配置,提高开发效率。 JSF(JavaServer Faces)是Java平台上的一个标准组件模型,用于构建富互联网应用程序(RIA)。它...

    JavaEE源代码 jsf-api

    JavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-apiJavaEE源代码 jsf-...

    jsf-api,jsf-impl,jst1-1.2,javaee

    标题中的"jsf-api"和"jsf-impl"分别代表了JSF框架的API接口和其实现。"jsf-api" JAR文件包含了JSF框架的公共接口和类,定义了各种组件、事件和生命周期方法,供开发者在代码中引用。而"jsf-impl" JAR文件则提供了...

    JavaEE源代码 jsf-impl

    JavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源代码 jsf-implJavaEE源...

    JSF-Java-jar包

    在提供的压缩包中,有两个重要的jar文件:`jsf-api.jar`和`jsf-impl.jar`。 1. **jsf-api.jar**: `jsf-api.jar`包含了JSF框架的核心API,开发者可以使用这些API来创建JSF组件、定义事件处理、管理bean属性等。这...

    jsf-api-src.zip

    `jsf-api-src.zip`是一个压缩包,包含了JSF API的源代码,这对于开发者深入理解JSF的工作原理、调试和自定义组件非常有帮助。 在这个源码包中,`jsf127src`很可能代表JSF 1.2或2.7版本的源代码。JSF 1.2是JSF的第一...

Global site tag (gtag.js) - Google Analytics