私はSeam 2.2.Finalを使用しており、15.3.5.1章の指示に従っています。トークンベースのRemember-me認証。Seam IdentityStoreトークンベースのrememberMeのNullpointerException
<security:identity authenticate-method="#{authenticator.authenticate}" />
<security:remember-me enabled="true" mode="autoLogin" cookie-max-age="604800"/>
<security:jpa-token-store token-class="com.mydomain.AuthenticationToken" />
<event type="org.jboss.seam.security.notLoggedIn">
<action execute="#{redirect.captureCurrentView}"/>
<action execute="#{identity.tryLogin()}"/>
</event>
<event type="org.jboss.seam.security.loginSuccessful">
<action execute="#{redirect.returnToCapturedView}"/>
</event>
私がログインして「remember me」をチェックすると、新しいトークンがデータベースに作成されます。また、identityStoreがinitalizedされている場合しかし、私は返すようにしようとすると、セッションがタイムアウトと、私はNullPointerExceptionが取得
Caused by: java.lang.NullPointerException
at org.jboss.seam.security.management.IdentityManager.isUserEnabled(IdentityManager.java:130)
at org.jboss.seam.security.RememberMe$1.execute(RememberMe.java:306)
at org.jboss.seam.security.Identity.runAs(Identity.java:743)
at org.jboss.seam.security.RunAsOperation.run(RunAsOperation.java:75)
に、また、identityStoreは、この呼び出しの後にNULLです。
protected void initIdentityStore()
{
// Default to JpaIdentityStore
if (identityStore == null)
{
identityStore = (IdentityStore) Component.getInstance(JpaIdentityStore.class, true);
}
私はそれは言及していない、特に場合は、私は内側に入れてよく分からないと言って、そしてどのような追加の注釈が必要とされている必要があり、この
<security:jpa-identity-store
user-class="com.domain.model.UserAccount"
role-class="com.domain.model.UserRole"/>
のようなのIdentityStoreを設定する必要がありますか必要となる文書の中にある。
THX
EDIT:このメッセージは、彼は方法を見つけるために持っているんところ、印刷されます。 seam.core.Initクラスのfactoriesマップには含まれていません。
if (log.isTraceEnabled()) log.trace("Seam component not found: " + name);
編集:私はcomponents.xmlでコンポーネントを「インストール」する必要があるとJpaIdentityStoreに、今までに少なくともlookupUserメソッドをオーバーライドするために持っているように[OK]を、そうです。