gpt4 book ai didi

angular - 如何检查x-session的状态?

转载 作者:太空狗 更新时间:2023-10-29 17:07:59 27 4
gpt4 key购买 nike

我正在使用 angular 6,使用 rest api,后端是 laravel php。没有 token ,如果你登录了,你会得到一个 x-session,你可以在 postman headers 中看到它

X-Session →1948c514b7e5669c284e85d6f612f9bd491
X-Session-Expiry →2038-08-02T09:19:03+00:00

如何从 Angular 检查x-sessionX-Session-Expiry的值? api端点中与 session 无关。我需要知道 session 是否仍处于打开状态,以及当 session 过期时,我需要注销用户。

登录时可以从 Angular 访问那些 x-session 值吗?它们存储在标题中吗?

服务

  login(username, password) {
const data = {
username: username,
password: password
};
const headers = new HttpHeaders();
headers.set('Content-Type', 'application/json');
localStorage.setItem('headers', JSON.stringify(headers));
return this.http.post(this.login_url, data, { headers: headers });
}

并且我尝试向用户服务提供相同的 session

  getUsers() {
const headers = JSON.parse(localStorage.getItem('headers'));
return this.http.get(this.users_url, { headers: headers });
}

但它不起作用,我没有得到任何用户,是否有解决方案?

最佳答案

1 周内两次,我打开一个问题的赏金然后我回答它,我能做什么?我无法删除它。

原来我需要更改我的登录功能

  login(username, password) {
const data = {
username: username,
password: password
};
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
return this.http.post(this.login_url, data, { headers: headers, observe: 'response' });
}

这就是你如何获得 x-session

  onLogin() {
this.auth.login(this.username, this.password).subscribe(data => {
this.auth.setLoggedIn(true);
localStorage.setItem('login', JSON.stringify(this.auth.isLoggedIn));
if (localStorage.getItem('data') === null) {
localStorage.setItem('data', JSON.stringify(data));
}
const session = data.headers.get('x-session');
const expiry = data.headers.get('x-session-expiry');
localStorage.setItem('session', JSON.stringify(session));
localStorage.setItem('session-expiry', JSON.stringify(expiry));


this.router.navigate(['']);
}, err => {
console.log(err);
});
}

这就是您使用它的方式,例如上面的 getUsers

  getUsers() {
const session = JSON.parse(localStorage.getItem('session'));
if (session != null) {
let headers = new HttpHeaders().set('Content-Type', 'application/json');
headers = headers.set('x-session', session);
return this.http.get(this.users_url, { headers: headers });
}
}

关于angular - 如何检查x-session的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51726105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com