2015-11-18 2 views
0

Я использую весной 4.2.1 с пружинной безопасностью 4.0.2Spring Security, программный Логин для JSon успокоительной веб-сервиса

На входе, мне нужно, чтобы вернуть объект 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> 

Все страницы я нахожу в отношении программного входа подтвердить, что я делаю это хорошо ,

Однако, когда я пытаюсь позвонить другой метод веб-службы позже, я получаю 403 как клиент не вошел в систему.

Я прочитал некоторые неопределенные ссылки на необходимости использовать пружинный фильтр, но я не уверен, как бы я получил фильтр, чтобы вернуть дерево json клиенту после успешного входа в систему.

Любые предложения или ссылки на пример о том, как это сделать, будут высоко оценены.

Благодаря

ответ

0

Sooo оказывается проблема заключалась в том, что я делаю Cross Origin Resource Sharing и браузер не посылает печенье через со следующей просьбой.

В основном я звоню сервер из HTML в файловой системе (с происхождением файлом: //)

Я опция обработки вызовов, но я не отправлял назад

Access-Control-Allow-Credentials true 

заголовков в ответы, и я должны были настроить угловым отправить кук, передавая флаг

withCredentials: true 

в объекте конфигурации до $ http.post

Смежные вопросы