JSF 是基于事件驱动的
所以 下面 就 基于 在JSF阶段事件(生命周期事件)中控制页面的访问权限
<!--EndFragment-->
主要是 实现一个生命周期监听接口 javax.faces.event.PhaseListener
public class SecurityLifeListener implements PhaseListener{
public void afterPhase(PhaseEvent arg0) {
}
public void beforePhase(PhaseEvent event) {
//设置 ViewRoot
FacesContext fc = event.getFacesContext().getCurrentInstance();
UIViewRoot uiv = new UIViewRoot();
//根据实际情况 设置跳转页面
uiv.setViewId("/login.jsp");
fc.setViewRoot(uiv);
//或者直接根据你配置文件的导航 来设置
// logout 来自配置文件
NavigationHandler nh = fc.getApplication().getNavigationHandler();
nh.handleNavigation(fc, null, "logout");
<!--EndFragment-->
//还可以使用 常用的HTTP对象
(HttpServletRequest) FacesContext.getCurrentInstance()
.getExternalContext().getRequest()
}
/**
* 参数说明 Restore_View:当(重新)访问JSP的时候,重建server端组件树。
*
* Apply_Request Value:将request parameters 复制到component submitted values。
*
* Process_Validators:执行验证。
*
* Update_Model Values:更新model数据:<h:inputText value="#{user.name}"/>
*
* Invoke_Application:调用应用程序:Action。
*
* Render_Response:渲染Response:保存状态并装载下一个视图。
*
*/
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
}
当然我们使用 javax.servlet.Filter 来进行访问权限控制 也行 ,但是没有比上面的方法来得更直接的了
我们通过上面的方法就明白 ,其实这个生命周期监听 和拦截器 很相似的 。它主要是控制某个生命周期的前后做什么处理
当然我们想让这个 监听响应的JSF生命周期的类生效 还需要下面的配置:
<lifecycle> <phase-listener id="securityListener"> com.SecurityLifeListener </phase-listener> </lifecycle>
下面说明它的优点:
不影响原有的业务逻辑代码的情况下,对页面进行权限控制;
集中处理页面权限,简单而高效。
分享到:
相关推荐
蝙蝠在线考试系统基于JSF2、Spring3、JPA2等JAVA技术构建,系统使用MYSQL数据库,可以部署于WINDOWS、LINUX、UNIX等各种操作系统,内置了无处不在的AJAX能力,简洁易用,支持单选题、多选题、填空题、判断题、问答题...
在 Git 中操作: 克隆位置: : 导出到 GitHub: : 本地访问 url:将上下文更改为 P07 原来是: 登录:管理员密码:123 去工作: 转到persistent.xml并更改对MySQL的访问权限(用户和密码); 在 MySQL 中创建 2 个...
管理员拥有查看服务器上所有驱动器或网络驱动器的完全访问权限。 贡献者只能访问在 webexplorer.properties 文件中配置的特定文件夹。 他们还可以上传、下载、添加、删除和重命名他们可以查看的特定文件夹的文件和...
Algaworks Book - fabiogm6 的研究 Java EE 7 with JSF, PrimeFaces 和 CDI by ... 本地访问 url:P05 的上下文 登录:管理员密码:123 去工作: 转到persistent.xml并更改对MySQL的访问权限(用户和密码); 在 MySQL
1、前言------为什么我们选择JSF,而不是其它framework 1 2、ArcGIS Server Java开发 JSF基础 2 3、ArcGIS Server Java ADF开发...29、Server Java开发--Born for SOA系列 通过代理类访问ArcGIS Server Web Service 84
提供跟踪工具的命令访问权限。 ## codetrack-scanner-core跟踪带有代码扫描器基类的lib ## codetrack-scanner-java跟踪Java语言扫描器处理器## codetrack-scanner-jsf跟踪JSF扫描器处理器 要使用以下命令运行第一个...
282 第16章 数据库技术和JDBC技术 283 16.1 关系数据库和SQL 283 16.2 关系数据库的工作环境 284 16.3 基于JDBC的数据访问技术 285 16.3.1 JDBC概述 285 16.3.2 数据库驱动程序 287 16.3.3 使用JDBC查询数据库 291 ...
Java EE培训7 训练材料 使用Java EE(Servlet,JSF)创建应用程序 使用Struts 2构建应用程序...授予对数据库的访问权限 grant all on trainingjee201801.* to trainingjee201801@localhost; 建立资料库 create databa
2.6 jsf框架的实现 2.7 ajax框架的实现 2.8 使用jdbc连接数据库 2.9 小结 第3章 实现各种框架的集成 3.1 spring框架与其他框架的集成原理 3.2 实现ssh三种框架环境集成 3.3 实现spring与...
PrettyFaces: EL API访问PrettyContext 支持JSF 1.1 增强了错误页面和servlet重定向 PrettyFaces是一个JSF1.2和JSF2.0的扩展,用来创建便于书签收藏、漂亮的网址。 PrettyFaces优雅的解决了这个问题,包括诸如功能:...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用...
API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用...
API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用...
API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用...
API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用...
API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用...
API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用...