Angular Ionic 3-提供程序是否在页面上持久存在?
情景: 当用户验证其手机时,他们将调用此身份验证提供程序的Login()函数。在立即登录之后,他们被带到一个配置文件页面,该页面将调用getUser函数。但是,变量user_id和user_token不会持久存在 提供者/Auth.tsAngular Ionic 3-提供程序是否在页面上持久存在?,angular,typescript,ionic-framework,ionic3,Angular,Typescript,Ionic Framework,Ionic3,情景: 当用户验证其手机时,他们将调用此身份验证提供程序的Login()函数。在立即登录之后,他们被带到一个配置文件页面,该页面将调用getUser函数。但是,变量user_id和user_token不会持久存在 提供者/Auth.ts import {Injectable} from '@angular/core'; import {Http} from '@angular/http'; import {Api} from './api'; import {Settings} from './
import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
import {Api} from './api';
import {Settings} from './settings';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import {Storage} from "@ionic/storage";
@Injectable()
export class Auth {
isLoggedIn: Boolean;
user_id: String;
user_token: String;
constructor(public http: Http, public api: Api, public settings: Settings, public storage: Storage) {
}
login(user) {
this.logout();
this.storage.set('user_id', user.id);
this.storage.set('user_jwt', user.jwt);
this.isLoggedIn = true;
this.user_id = user._id;
this.user_token = user.jwt;
}
logout() {
this.storage.remove('user_id');
this.storage.remove('user_jwt');
this.isLoggedIn = false;
this.user_id = null;
this.user_token = null;
}
isAuthenticated() {
return this.isLoggedIn;
}
getUser() {
console.log("UserID: " + this.user_id);
console.log("UserToken: " + this.user_token);
if (this.isAuthenticated()) {
return {
id: this.user_id,
token: this.user_token,
};
}
}
}
p.S我已在app.module.ts providers[]中添加了此提供程序。它不会持久保存数据。因此,您必须通过
存储
模块获取数据,如下所示
getUser() {
// to get a key/value pair
this.storage.get('user_id').then((val) => {
console.log('Your user_id', val);
});
}
但我正在清理上一个会话,并在之后直接设置一个新会话。正如你们所看到的。你们可以直接在下面的登录函数中看到,我设置了这个。user\u id=user.\u id等等。不,它不会那样工作。这些是
承诺
。因此,请尝试不这样做,然后查看结果。您好,我删除了注销,但它们仍然未定义。然后您的问题是user
object herelogin(user)
它的值是多少?你可以很容易地调试这个不?好的,谢谢,我现在开始工作了。最后,在此会话/存储中处理用户是否是一种良好的做法?