認証が成功し、次のプロファイルを完了するためにユーザーに要求
-
18-09-2019 - |
質問
私は、WebSphere Portal 6.1のスタンドアロンのカスタム・レジストリー、カスタムログインポートレット、およびカスタム・プロファイル・ポートレットを開発しています。いくつかの既存のユーザーは、自分のプロファイル内の1つまたは複数の必須フィールドを完了していません。
これらのユーザーは正常にログイン次回は、どのように私は、ポータルは、の前にの彼らのサイトの残りの部分へのアクセスを与えるカスタムプロファイルのポートレットにリダイレクトするために得ることができますか?
解決
これは、WebSphere Portal 6.1のように見えるフィルタのチェーンを介した認証要求を送信するためのAPIが付属しています。私は、開発者の作品にAPIを説明した記事( '<のhref = 『http://www.ibm.com/developerworks/websphere/library/techarticles/0905_buchwald/0905_buchwald.html?S_TACT=105AGY82&S_CMP=MAVE』のrel =」を見つけWebSphere Portalのの "中">新しいセキュリティAPI)noreferrer nofollowを。
特に、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