セキュリティ認証プロセスで認証オブジェクトにカスタム データを追加したい:
public class MyAuthFilter extends AbstractAuthenticationProcessingFilter {
MyUserDetailService userDetailService; // <==== How to wire??
@Override
public Authentication attemptAuthentication(
HttpServletRequest request,
HttpServletResponse response)
throws AuthenticationException, IOException, ServletException {
...
Authentication auth = new UsernamePasswordAuthenticationToken(
username,
r.sessionId,
Arrays.asList(new GrantedAuthority[]{new SimpleGrantedAuthority(grantedUserRole)}));
auth.setDetails(userDetailService.getDetail()); // <== Save detail to auth.
return auth;
}
}
MyUserDetailService サービスを接続するにはどうすればよいですか?
MyUserDetailService をプリンシパル マッピングにキャッシュするにはどうすればよいですか (不要な呼び出しを回避userDetailService.getDetail()
し、メモリ不足にならないようにするため)。
PS spring-security.xml
:
<http use-expressions="true" auto-config="false" entry-point-ref="oauthEntryPoint" authentication-manager-ref="oauthAuthenticationManager">
<custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" />
<intercept-url pattern="/login.htm" access="permitAll" />
<intercept-url pattern="/**" access="isAuthenticated()" />
<anonymous username="anonymous" enabled="true" granted-authority="AN" key="anonymous-security" />
<logout invalidate-session="true" logout-url="/logout" success-handler-ref="logoutHandler"/>
</http>
<beans:bean id="myFilter" class="com.web.filter.MyAuthFilter"> ...</beans:bean>