请问 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> ");//自动返回到初始页}
%>
[解决办法]
先頂一下了