【发布时间】:2017-05-09 11:45:17
【问题描述】:
使用 JSP 表单记录:
@ManagedBean
@SessionScoped
public class LoginView {
private String username; //+getter +setter
private String password; //+getter +setter
public String submit()
{
try {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance()
.getExternalContext()
.getRequest();
request.login(username, password);
} catch (ServletException e) {
FacesContext.getCurrentInstance().addMessage("login-form:username",
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Validation Error", "Incorrect login or password"));
return "/login";
}
return "/index?faces-redirect=true";
}
}
如何通过 EJB 检查用户是否登录?
下面我需要的例子:
@Stateless
public class SessionServiceBean {
@Resource
SessionContext sessionContext;
@EJB
UserService userService;
@Produces
@Named
@LoggedIn
public User getLoggedUser() {
if (/* check user is logged */) {
return userService.getByName(sessionContext.getCallerPrincipal().getName());
}
}
}
我只发现未记录的使用名称为“匿名”,但我认为这不是更好的方法。
【问题讨论】: