登录后从localStorage检索值时遇到麻烦。问题在这里
getOrgId(){
console.log(localStorage.getItem('orgId')) //Give null
return localStorage.getItem('orgId')
}
它赋予空值,但是当我重新加载页面时,我得到了价值。
身份验证服务
public loginUser(userData: LoginRequest): Observable<LoginResponse> {
console.log(userData.password)
return this.http.post<LoginResponse>("api/auth/login", userData,httpOptions)
.pipe(
tap( // Log the result or error
data => {
if (data.status['message'] === 'Success.') {
const loginData = {role: data.role, user: data.user, token: data.token,orgId:data.orgId,email:data.email,orgName:data.orgName};
localStorage.setItem('loginData', JSON.stringify(loginData));
localStorage.setItem('loginUserId', userData.userId);
localStorage.setItem('token', JSON.stringify(loginData.token));
localStorage.setItem('orgId', JSON.stringify(loginData.orgId));
localStorage.setItem('email', JSON.stringify(loginData.email));
localStorage.setItem('orgName',JSON.stringify(loginData.orgName));
localStorage.setItem('role', JSON.stringify(loginData.role));
console.log("logindata:" +loginData.orgId); //Give Value
console.log(this.isLoggedIn());
this.login.next(this.isLoggedIn());
this.router.navigateByUrl('/dashboard');
} else {
localStorage.removeItem('loginData');
localStorage.removeItem('loginUserId');
localStorage.removeItem('token');
localStorage.removeItem('orgId');
localStorage.removeItem('orgName');
this.login.next(this.isLoggedIn());
}
},
error => {
localStorage.removeItem('loginData');
localStorage.removeItem('loginUserId');
localStorage.removeItem('token');
localStorage.removeItem('orgId');
localStorage.removeItem('orgName');
this.login.next(this.isLoggedIn());
console.log(error);
}
)
);
}
getOrgId(){
console.log(localStorage.getItem('orgId')) //Give null
return localStorage.getItem('orgId')
}
答案 0 :(得分:0)
我不知道这个答案对您有没有帮助,因为这几个月来,我在角度上也很挣扎。
我看到您需要使用函数从urlocalStorage收集值。也许我的代码可以帮助您:/
||我正在将Java用于Web服务,顺便说一句||
Authentication.service.ts
login(username: string, password: string) {
return this.http.post < any > (this.a.SERVER_URL + '/system/auth/newLogin', { // /authentication/login
// return this.http.post < any > (this.a.SERVER_URL + '/authentication/login', {
username: username,
password: password
})
.map(user => {
// login successful if there's a jwt token in the response
console.log(user);
if (user && user.d) {
// if (user && user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('username', username);
localStorage.setItem('entitas_id', user.d.entitas_id);
localStorage.setItem('role_id', user.d.role_id);
localStorage.setItem('token', user.d.token);
localStorage.setItem('active', user.d.active);
localStorage.setItem('jabatan_id', user.d.jabatan_id);
localStorage.setItem('currentUser', JSON.stringify(user));
} else {
// Gagal Login
this.options.message = user.m;
notify(this.options, 'error', 3000);
}
return user;
});
}
某些文件包含我需要从localStorage收集价值的功能
BaruChanged(e){
console.log(e)
const jabatan = localStorage.getItem('jabatan_id');
const entitas_id = localStorage.getItem('entitas_id');
const username = localStorage.getItem('username').toString().toUpperCase();
this.role.username=username;
this.role.entitas_id = entitas_id;
this.role.jabatan = jabatan;
}
我正在将localStorage.getItem('jabatan_id')保存到一些const中。这就是我想向您介绍的内容:))
答案 1 :(得分:0)
我认为您可能会在ngOninit()或组件Constructor中调用 getOrgId()函数,这就是为什么它会给出null的原因,因为在本地设置中设置值之前,您正在调用getOrgId()函数。
只需在两个函数 getOrgId()和 loginUser()中编写一个控制台,检查哪个先打印。