我試圖在我的網站上使用Spring實現「記住我」功能。 cookie和persistent_logins表中的條目正在正確創建。另外,我可以看到正確的用戶正在恢復,因爲用戶名顯示在頁面的頂部。在Spring Security中記住我的服務問題
但是,一旦我嘗試訪問這個用戶的任何信息,當他們被「記住」後返回時,我會得到一個NullPointerException。它看起來好像沒有再次在會話中設置用戶。
我的applicationContext-security.xml文件包含以下內容:
<remember-me data-source-ref="dataSource" user-service-ref="userService"/>
...
<authentication-provider user-service-ref="userService" />
<jdbc-user-service id="userService" data-source-ref="dataSource"
role-prefix="ROLE_"
users-by-username-query="select email as username, password, 1 as ENABLED from user where email=?"
authorities-by-username-query="select user.id as id, upper(role.name) as authority from user, role, users_roles where users_roles.user_fk=id and users_roles.role_fk=role.name and user.email=?"/>
我認爲它可能有一些東西需要與用戶按用戶名查詢,但肯定會登錄無法正常工作,如果該查詢是不正確的?
任何幫助,將不勝感激。
謝謝, gearoid。
請記住,您可能會在您的安全配置中有兩個關鍵參數。用於RememberMeAuthenticationProvider,另一個用於TokenBasedRememberMeServices。確保他們是平等的。 – kboom
@kboom謝謝你提到有兩個鍵! –