我正在为Websphere Portal 6.1开发独立的自定义注册表,自定义登录portlet和自定义配置文件portlet。某些现有用户尚未在其配置文件中填写一个或多个必填字段。
下次这些用户成功登录时,我怎样才能让门户网站将重定向到自定义配置文件portlet ,以便他们访问网站的其余部分?
答案 0 :(得分:2)
看起来Websphere Portal 6.1附带了一个API,用于通过一系列过滤器发送身份验证请求。我发现了一篇描述开发人员工作API的文章('New security APIs in Websphere Portal')。
特别是,com.ibm.portal.auth.ExplicitLoginFilter接口允许您在身份验证序列期间插入并动态更改系统在验证用户凭据后重定向的位置。这是一个简短的例子:
public class CustomLoginFilter implements ExplicitLoginFilter {
public void login(HttpServletRequest req, HttpServletResponse resp,
String userId, char[] password,
FilterChainContext portalLoginContext, Subject subject,
String realm, ExplicitLoginFilterChain chain)
throws LoginException, WSSecurityException,
com.ibm.portal.auth.exceptions.LoginException {
//Validate the user's credentials.
chain.login(req, resp, userId, password, portalLoginContext, subject, realm);
//Redirect to profile portlet if required profile fields are incomplete.
if(incompleteProfile(userId)) {
portalLoginContext.setRedirectURL(getURLForProfilePortlet());
}
}
//Other methods...
}
ExplicitLoginFilter及其依赖项位于以下jar文件中,在编译代码时必须将这些文件添加到类路径中:
从Websphere Portal根目录开始...
/base/wp.auth.base/shared/app/wp.auth.base.jar
/base/wp.base/shared/app/wp.base.jar