你不需要.它使设计良好的webapps毫无意义.servletcontainer已经完成了会话管理.只需将登录用户放入会话范围即可.
@ManagedBean
@RequestScoped
public class LoginController {
private String username;
private String password;
@EJB
private UserService userService;
public String login() {
User user = userService.find(username, password);
FacesContext context = FacesContext.getCurrentInstance();
if (user == null) {
context.addMessage(null, new FacesMessage("Unknown login, try again"));
username = null;
password = null;
return null;
} else {
context.getExternalContext().getSessionMap().put("user", user);
return "userhome?faces-redirect=true";
}
}
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "index?faces-redirect=true";
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
登录用户将#{user}在整个同一会话的所有页面中@ManagedProperty以及其他bean中可用.
但是,在注销时,使会话无效更有意义.这将废弃所有会话范围的bean.你可以用ExternalContext#invalidateSession()它.
public String logout() {
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return "index?faces-redirect=true";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12200 次 |
| 最近记录: |