我使用JAAS,但我不知道如何获得有关用户id、用户名的信息。应该使用ManagedBean来设置值,还是由它自己提供的JAAS来设置。
发布于 2016-05-19 18:36:54
JAAS提供用户名,但不提供所有信息,这里建议使用ManagedBean和JSP来恢复所有信息
使用JSF,您可以获得有关用户的所有信息,如下所示:
import org.service.UserFacade;
import org.entity.userEntity;
import java.security.Principal;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@SessionScoped
public class MySessionController {
@EJB
private UserFacade userFacade;
String login;
public MySessionController() {
Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
// get login from principal
login = principal.getName();
//get all informations of user from EJB : UserFacade
userEntity user = userFacade.findByLogin(login);
}
}使用JSP,您可以获得有关用户的所有信息,如下所示:
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.Context"%>
<%@page import="org.service.UserFacade"%>
<%@page import="org.entity.userEntity"%>
<%@page import="java.security.Principal"%>
<%
String login;
Principal loginUser = request.getUserPrincipal();
// get login from principal
if (loginUser != null) {
login = loginUser.getName()
}
//get all informations of user from EJB : UserFacade
Context c = new InitialContext();
UserFacade userFacade = (UserFacade) c.lookup("java:global/MyProject/MyEjbMoule/UserFacade!org.service.UserFacade");
userEntity user = userFacade.findByLogin(login);
%>https://stackoverflow.com/questions/31103873
复制相似问题