日期:2014-05-18  浏览次数:20731 次

请问 JSF 如何在页面判断用户权限,对未登陆用户直接跳转
我有一个session   bean,记录登陆用户的用户名和权限

如何保护一个jsf页面,不让未登陆的用户访问呢,   在backbean里面可以通过检测,让其操作无效或者隐藏JSF的控件,   可是我希望没登陆的用户打开这个页面的时候直接跳转到登陆页面。

JSF页面可以用     <c:redirect   url= "index.faces "/>   跳转,可是这个条件判断怎么作呢?   看了一篇文章,说可以用JSF   和   JSTL   操作同一个backing   bean

<f:view>

<jsp:useBean   class= "user.Login "   id= "login "   scope= "session "/>
<c:if   test= "$   {login.name==null} ">
<c:redirect   url= "index.faces "/>
</c:if>
。。。。。。。。。。以下省略,  

奇怪的是   如果 <c:if   test= "true ">   那么下面的跳转就执行了,可是用判断
login.name==null   或者   login.name!=null,   居然都不其左右,到底怎么回事呢?


多谢大家了

------解决方案--------------------
没必要这么复杂,你可以做一个判断页,在这个判断页中进行检查login是否正常,如
<%@ page import= "javax.faces.context.FacesContext "%>
<%@ page import= "javax.faces.el.ValueBinding "%>
<%@ page import= "com.sun.faces.util.Util "%>
<%@ page import= "com.login "%>
<%
ValueBinding binding = Util.getValueBinding( "#{login} ");
login user=(login) binding.getValue(FacesContext.getCurrentInstance());
String path = request.getContextPath();
if(user.name==null){out.print( " <script language= 'JScript '> self.parent.location= ' "+basePath+ " '; </script> ");//自动返回到初始页}
%>
------解决方案--------------------
先頂一下了