Servlets jsf2.0登录&x2B;设置用户主体
我正在尝试使用JSF2.0表单对用户进行身份验证。 我还想创建UserPrincipals。 我认为使用HttpServletRequest.login方法可以创建一个新的UserPrincipal。 我所做的是: 公式:Servlets jsf2.0登录&x2B;设置用户主体,servlets,jsf-2,login,Servlets,Jsf 2,Login,我正在尝试使用JSF2.0表单对用户进行身份验证。 我还想创建UserPrincipals。 我认为使用HttpServletRequest.login方法可以创建一个新的UserPrincipal。 我所做的是: 公式: <h:form> <h:outputLabel value="Name" for="name"/> <h:inputText id="name" value="#{userMng.user.name }"
<h:form>
<h:outputLabel value="Name" for="name"/>
<h:inputText id="name" value="#{userMng.user.name }"/>
<br/>
<h:outputLabel value="Passwort" for="pw"/>
<h:inputSecret id="pw" value="#{userMng.user.password }"/>
<br/>
<h:commandButton type="submit" value="Submit" action="#{ userMng.login }"/>
</h:form>
但是,当我想在登录后打印UserPrincipal.getName时,当我调用:
request.getUserPrincipal().getName();
那么,我的代码或在成功登录后创建新UserPrincipal的方法有什么问题
最佳用户主体仅在登录后的后续请求中可用。您需要在登录后发送重定向以强制浏览器创建新请求
ret = "success?faces-redirect=true";
在视图中打印用户名时,最好使用EL。通过#{request}
已经可以使用EL中的
<p>Welcome #{request.userPrincipal.name}!</p>
欢迎#{request.userPrincipal.name}
或者只是捷径
<p>Welcome #{request.remoteUser}!</p>
欢迎#{request.remoteUser}
当我执行ret=“success?faces redirect=true”时;我的导航规则不起作用。JSF没有重定向到success页面,而且似乎login方法没有创建新主体。当我想在请求后在登录方法中打印UserPrincipal时,UserPrincipal也是空对象。loginOh您仍然在使用老式的XML导航规则吗?在那里放一个
,或者用隐式导航替换所有这些导航规则,如“viewId”
,如“viewId?faces redirect=true”
。是的,我使用XML导航规则?更好的方法是什么?:)但是UserPrincipal的问题仍然存在?另外,当我想在登录方法中打印UserPrincipal时。。
<p>Welcome #{request.remoteUser}!</p>