首页 > 解决方案 > 在应用程序中始终保持登录状态,当我关闭应用程序时,使用 Nativescript 中的 Http 重新启动、关闭移动设备等

问题描述

我想在我的应用程序中保持登录状态,只有当我单击从系统注销时我才想断开连接。

请问有什么想法吗?

为了登录系统,我使用了以下代码:

export class LoginComponent implements OnInit {
    LoginForm: FormGroup;
    loading: boolean = false;
    constructor(private formBuilder: FormBuilder, private loginservice: LoginService, private router: Router) {
        this.LoginForm = this.formBuilder.group({
            username: ["", Validators.required],
            password: ["", Validators.required]
        });
    }
    public ngOnInit() {
    }

    login() {
            this.loading = true;
            this.loginservice.loginByUsernameAndPassword(
            this.LoginForm.controls['username'].value,
            this.LoginForm.controls['password'].value
        )
            .subscribe(
                result => {
                       if (result === true) {
                        this.router.navigate(['/main']);
                    } else {
                        this.loading = false;
                    }
                }
            );
    }
}

service.ts 的这个代码

  public loginByUsernameAndPassword(username: string, password: string): Observable<boolean> {
    let urlSearchParams = new URLSearchParams();
    urlSearchParams.append('username', username);
    urlSearchParams.append('password', password);
    let body = urlSearchParams.toString();
    let LS = require("nativescript-localstorage");
    let headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    return this.http.post(Api.getUrl(Api.URLS.Login_mobile), body, {
      headers: headers
    })
      .pipe(map((response: Response) => {
        let res = response.json();
        console.log('res')
        console.log(res)
        if (res.StatusCode === 0 && res.Token) {
          this.currentUser = {
            username: username,
            token: res.Token
          }
          LS.getItem(LoginService.CURRENT_USER, JSON.stringify(this.currentUser));
          Toast.makeText('Authentificate successfully').show();
          return true;
        } else {
          return false;
        }
      }));
  }

  public logout(): void {
    let LS = require("nativescript-localstorage");
    LS.removeItem(LoginService.CURRENT_USER);
    this.router.navigate(['/']);
  }

您能否建议我,任何想法如何实现在应用程序中始终保持登录状态,以及当我关闭应用程序、重新启动、关闭移动设备等时。我只想在单击注销时断开与应用程序的连接。

我需要你的建议。

标签: angulartypescriptloginnativescriptstay-logged-in

解决方案


推荐阅读