成功登录后获取cookie

Getting a cookie after a successful login?

本文关键字:cookie 获取 登录 成功      更新时间:2023-09-26

我有一个Angular应用,它有用户登录和身份验证。当他们登录时,他们会去一个单独的url和服务,这不是angular模板的一部分(不是我的选择,不是我的设计,没有自由去改变它)。

我们的app url是https://my.app.com/appname

和登录url(重定向到另一个url,有Spring CAS的东西)

https://my.app.com: 8082/api/应用程序/浏览器名称/user/登录

重定向到

https://yours.app.com/CAS/login。

成功登录后,我们返回到原始应用程序页面。

但是,我需要以某种方式获得Cookie,其中包含登录到应用程序的用户的用户名。

该cookie是与https://my.app.com:8082/api/applications/appname/user/login绑定的响应cookie

,但不是应用程序的主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,值为我想要的USERNAME。

应用程序位于https://my.app.com/appname上,我需要访问前面提到的cookie。

CAS不为用户登录设置cookie。它将为您的SSO会话设置一个名为Ticket Granting cookie (TGC)的cookie。此令牌不提供登录用户的任何信息。

要检索已登录用户的身份,必须验证Service Ticket。当CAS/login将您重定向到您的应用程序时,此票证将附加到您的服务的url。然后,CAS客户端必须根据CAS/serviceValidate验证该票据。该客户端应该在您的后端,用户名应该在会话中设置。