ログインフォームをテンプレートに

現在、J2では、ログインポートレットを置かねば、ログインすることができない。がしかし、テンプレートにログインフォームを付ける方法もある。それをやるためには、PortalFilterを有効にする必要がある。以下のような変更。

--- src/webapp/WEB-INF/web.xml  (リビジョン 378369)
+++ src/webapp/WEB-INF/web.xml  (作業コピー)
@@ -24,23 +24,19 @@
<filter-name>AJAXFilter</filter-name>
<filter-class>org.apache.jetspeed.ajax.AJAXFilter</filter-class>
</filter>
-  <!--
<filter>
<filter-name>PortalFilter</filter-name>
<filter-class>org.apache.jetspeed.login.filter.PortalFilter</filter-class>
</filter>
-  -->
<filter-mapping>
<filter-name>AJAXFilter</filter-name>
<url-pattern>*.ajax</url-pattern>
</filter-mapping>
-<!--
<filter-mapping>
<filter-name>PortalFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
--->
<listener>
<listener-class>org.apache.jetspeed.engine.JetspeedServlet</listener-class>

これにより、レイアウトデコレータにログインフォームを置いて、ログインすることができる。でも、まだ、ログインエラーの時などの処理方法が確立してないんだけどね・・・。まぁ、方法がないというわけではないと言うことで。

pageEncodingがないと化けるのか?

というわけで、試してみました。テスト用には、PALから提供されている、helloworldポートレットを使用して、helloworld.jspを変更して試してみました。UTF-8 で J2 を動かし、J2の表示エンコーディングをUTF-8にして、JSPをShift_JISにして、pageEncodingがあるなしで確認したところ、pageEncodingがあれば、化けずに表示されています。そんで、pageEncodingを置かなければ、普通に化けました。というわけで、特に問題ないようです。一安心 🙂

org.apache.jetspeed.security.spi.InternalPasswordCredentialInterceptor

src/webapp/WEB-INF/assembly/security-spi-atn.xmlで設定されているけど、これでJ2のパスワードのバリデーションなどなどを実行してます。デフォルトでは以下のような感じ。

<!-- allow multiple InternalPasswordCredentialInterceptors to be used for DefaultCredentialHandler -->
<bean id="org.apache.jetspeed.security.spi.InternalPasswordCredentialInterceptor"
class="org.apache.jetspeed.security.spi.impl.InternalPasswordCredentialInterceptorsProxy">
<constructor-arg index="0">
<list>
<!-- enforce an invalid preset password value in the persisent store is required to be changed -->
<bean class="org.apache.jetspeed.security.spi.impl.ValidatePasswordOnLoadInterceptor"/>
<!-- ensure preset cleartext passwords in the persistent store  will be encoded on first use -->
<bean class="org.apache.jetspeed.security.spi.impl.EncodePasswordOnFirstLoadInterceptor"/>
</list>
</constructor-arg>
</bean>

もし、パスワードに有効源期限を設定したければ、PasswordExpirationInterceptorを追加すれば良いでしょう(試してないけど)。他にもcomponents/security/src/java/org/apache/jetspeed/security/spi/implにいくつかあるから、参考になるかと。