我在Angular 6中有一个应用程序,它可以启动许多其他旧版应用程序。旧版应用程序使用sessionid cookie进行身份验证。但是,角度应用程序使用令牌身份验证。当我打开旧版应用程序时,将提示登录页面并添加sessionid cookie。但是,当我回到有角度的应用程序并将一个http请求发送到我的api时,sessionid cookie连同它的令牌身份验证一起发送。拥有sessionid会导致未经授权的错误响应。
这可以通过删除sessionid cookie来解决,但用户不必一直这样做。
如何管理两种身份验证方法而不将它们绑在一起并导致彼此出错。
答案 0 :(得分:0)
根据从服务器返回到浏览器时Set-Cookie
标头的配置方式,浏览器会自动为特定域发送Cookie。
当您第一次向“旧版应用程序”发送请求时,它会返回一个Cookie,该Cookie存储在您的浏览器中,用于该特定域(例如example.com)。您随后对example.com或example.com/api发出的所有http请求都会导致浏览器自动发送该cookie。
根据您的描述,您的“旧版登录应用程序”和“ API”(需要令牌身份验证)似乎都托管在同一域或子域中。
您可以更改DNS设置,以使“旧版登录应用程序”与“ API”位于不同的子域中。例如legacyapp.example.com和api.example.com。并确保它返回不带Set-Cookie: domain=example.com
的cookie,这会导致浏览器将cookie发送到两个子域,因为example.com是更高级别的域。