在JSF中实现用户登录页面的最佳方式

时间:2011-04-20 15:44:49

标签: jsf

在JSF 1.2中实现登录页面的最佳方法是什么?如果会话超时,则将重定向到登录页面。我在互联网上找到了2种方法。

  1. 使用PhaseListener - > http://www.jsfcentral.com/listings/A92000?link
  2. 使用过滤器 - > What is the correct way to implement login with redirect using JSF 2.0?
  3. 我也希望用户在登录页面后立即浏览协议页面。用户需要点击“同意”按钮继续使用该系统。

    任何人都可以告诉我哪个选项更好或是否有更好的方法来实现它。

    谢谢,

3 个答案:

答案 0 :(得分:2)

  

在JSF 1.2中实现登录页面的最佳方法是什么?

只需使用带有<h:form>的JSP / Facelet页面和适当的输入元素以及将用户置于注入的会话范围bean中的辅助bean。

  

如果会话超时,则会将使用重定向到登录页面。我在互联网上找到了2种方法。

绝对使用Filter。对于这个简单的用例,PhaseListener有太多开销。您对过滤/修改JSF生命周期不感兴趣,只是过滤/修改HTTP请求。

  

我也希望用户在登录页面后立即浏览协议页面。用户需要点击“同意”按钮继续使用该系统。

那么,那么只是开发这样一个页面?如果您卡住,请按右侧顶部的Ask Question,并详细说明实际问题。

答案 1 :(得分:0)

Filter总是更好用于此,也更适合。

现在满足您的要求,

成功登录   - 将adminBean保存到会话中 接受条款   - 更新这个bean的字段

  • 并检查其余页面的条件。
  • 不登录登录页面
  • 检查bean的术语页面

答案 2 :(得分:0)

在JSF2中,可以使用系统事件来完成。在您的模板页面中输入

< f:event type="preRenderView" listener="#{loginBean.checkLogin}"/> 

并在loginBean中(使其成为会话作用域)你可以这样做

public void checkLogin(ComponentSystemEvent event) {
// loggedIn is a boolean variable when sucessfully logged in make it true and at   logout  make it false.
if (!loggedIn) { 
 FacesContext context = FacesContext.getCurrentInstance();
 ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler)
 context.getApplication().getNavigationHandler();
 handler.performNavigation("login");
 }
}