0
我使用彈簧4.2.1使用Spring Security 4.0.2春季安全,對JSON的RESTful Web服務
在登錄時,我需要一個JSON對象樹返回給客戶端,包含緩存的數據編程它登陸會議需要。
所以我已經添加了以下方法:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public @ResponseBody ServerResponse<?> login(@RequestBody LoginRequest loginRequest, HttpServletRequest request, HttpServletResponse response) {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword());
Authentication result = authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(result);
Object data = null; // Do stuff here
return new ServerResponse<>(data);
}
我春天的安全配置:
<ss:http auto-config="false" use-expressions="true" entry-point-ref="authenticationEntryPoint">
<ss:anonymous enabled="false" />
<!-- this is enabled by default in spring 4 -->
<ss:csrf disabled="true" />
<ss:custom-filter position="FORM_LOGIN_FILTER" ref="myAuthFilter" />
<ss:session-management session-authentication-strategy-ref="sas" />
<ss:port-mappings>
<ss:port-mapping http="8080" https="8443" />
</ss:port-mappings>
<ss:intercept-url pattern="/app/logi**" access="permitAll()" />
<ss:intercept-url pattern="/app/logou**" access="permitAll()" />
<ss:intercept-url pattern="/app/**" access="hasAuthority('user')" />
<ss:intercept-url pattern="/www/**" access="hasAuthority('user')" />
</ss:http>
我所找到的網頁有關的綱領性登錄確認我在做什麼是好的。
然而,當我嘗試另一個Web服務方法再打,我得到403作爲客戶端沒有登錄。
我讀了一些模糊的引用不必使用彈簧過濾器,但我不知道在成功登錄後,如何讓過濾器將json樹返回給客戶端。
任何建議或指向如何做到這一點的例子的鏈接將不勝感激。
感謝