对于使用单点登录在JSF中编写的Web应用程序,我们需要替换当前的登录名。目前,我们的login.jsp调用支持bean上的authenticate方法来实现此目的并执行其他角色验证。现在身份验证将由我的单点登录服务器完成,但是我如何在辅助bean上调用authenticate方法来执行角色验证
答案 0 :(得分:2)
将请求参数设置为托管属性,并使用@PostConstruct
注释在bean构造和托管属性设置后立即执行一些代码。
您可以将GET或POST请求参数设置为托管属性,如下所示:
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>mypackage.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>name1</property-name>
<value>#{param.name1}</value>
</managed-property>
<managed-property>
<property-name>name2</property-name>
<value>#{param.name2}</value>
</managed-property>
</managed-bean>
或者,如果您已经使用JSF 2.0,那么您可以使用@ManagedProperty
:
@ManagedProperty(value="#{param.name1}")
private String name1;
@ManagedProperty(value="#{param.name2}")
private String name2;
当enduser使用name1=value1&name2=value2
查询字符串触发GET或POST请求时,将设置这些参数。 #{param.name1}
EL表达式基本上代表request.getParameter("name1")
的结果。
现在创建一个@PostConstruct
方法,如下所示:
@PostConstruct
public void init() {
if (name1 != null && name2 != null) {
// Both request parameters are been set. Do your thing here!
}
}