Получаете куки после успешного входа?
Так что у меня есть Angular App, которая имеет логин и аутентификацию пользователя. Когда они входят в систему, они переходят на отдельный URL-адрес и службу, что не является частью углового шаблона (не мой выбор, не мой дизайн, у него нет свободы изменять его).
Таким образом, у нас есть URL нашего приложения на https://my.app.com/appname
И URL-адрес для входа (который перенаправляет на другой URL-адрес, содержащий материал Spring CAS)
https://my.app.com:8082/api/applications/appname/user/login
Который перенаправляет на
https://yours.app.com/CAS/login.
После успешного входа мы возвращаемся на исходную страницу приложения.
Однако мне нужно как-то получить Cookie, в котором есть имя пользователя, вошедшего в приложение.
Этот файл cookie является файлом cookie ответа, связанным с https://my.app.com:8082/api/applications/appname/user/login
но не основной URL-адрес приложения.
Итак, как мне получить этот файл cookie, предпочтительно используя ngCookie?
Для справки вот внутренний код, который обрабатывает это.
@RequestMapping(method = RequestMethod.GET, value = "/login", headers = "Accept=application/json")
public @ResponseBody HttpServletResponse login(HttpServletRequest request, HttpServletResponse response) {
// toLog(Level.INFO, "Logging user in.");
String referingURL = request.getHeader("referer");
_LOG.debug("Referer: " + referingURL);
try {
String user = "123456789";
user = SecurityUtils.getCurrentUsername();
Cookie userCookie = new Cookie("USERNAME", user);
userCookie.setSecure(true);
response.addCookie(userCookie);
response.sendRedirect(referingURL);
return response;
} catch (Exception e) {
// toLog(Level.ERROR, "Error logging user in", e);
throw new ResourceNotFoundException(e);
}
}
Где эта строка Cookie userCookie... это куки, которые я хочу получить.
Еще проще.
URL https://my.app.com:8082/api/applications/appname/user/login
Имеет ответный файл cookie с ключом USERNAME со значением имени пользователя, которое я хочу.
Приложение находится по https://my.app.com/appname, и мне нужно получить доступ к ранее упомянутым файлам cookie.
1 ответ
CAS не устанавливает куки с логином пользователя. Он установит файл cookie для вашего сеанса единого входа, называемый файлом cookie предоставления билетов (TGC). Этот токен не предоставляет никакой информации о зарегистрированном пользователе.
Чтобы получить личность зарегистрированного пользователя, вы должны подтвердить сервисный билет. Этот билет добавляется к URL-адресу вашего сервиса, когда CAS / login перенаправляет вас обратно к вашему приложению. Затем клиент CAS должен проверить этот билет по CAS / serviceValidate. Этот клиент должен быть в вашем бэкэнде, а имя пользователя - в сеансе. До вас, чтобы отправить его на ваш интерфейс так, как вы хотите.