如何在角度5中处理用户会话

Vin*_*inu 10 angular

对于后端,我使用Spring Framework和'Shiro'进行身份验证,

对于前端,我使用的是Angular 5.

如果我从postman调用我的登录API,那么在我使用logout API之前,我将获得相同的用户会话.(哪个是对的)

邮差用户界面图片: 在此输入图像描述

但是当我从我的角度5调用我的登录API时,我在每次调用时都会得到不同的用户会话.(这是错的.)

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/toPromise';

@Injectable()
export class LoginService {
  private headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
  private _url:string = "v1/login";

  constructor(private http: HttpClient) { }

  login(){
    const data = {userName:"root", password:"root"};
    return this.http.post(this._url,{headers: this.headers},{params : data})
    .subscribe(data => {sessionStorage.setItem("jsessionid",JSON.parse(JSON.stringify(data)).jsessionid)});
  }
}
Run Code Online (Sandbox Code Playgroud)

角度UI图像: 在此输入图像描述

每次调用'jsessionid'都会改变,如''所示

Vin*_*inu 3

会话管理将自动进行。

如果我们当时在一台服务器上有客户端,在另一台服务器上有后端,我们只需要添加“proxy.conf.json”文件。并且需要在“package.json”文件中添加该文件条目。

重要提示:- 将服务器 URL 添加到“proxy.conf.json”中的端口号。(服务器 URL 输入到端口号)

{
    "/": {
      "target": "https://localhost:30443",
      "secure": false
    }
 }
Run Code Online (Sandbox Code Playgroud)

就我而言,我/mainlayer在服务器 URL 中使用了一个额外参数。(这是错误的。)

{
   "/": {
     "target": "https://localhost:30443/mainlayer",
     "secure": false
   }
}
Run Code Online (Sandbox Code Playgroud)

LoginService课堂上只需添加额外的参数即可。

private _url:string = "mainlayer/v1/login";
Run Code Online (Sandbox Code Playgroud)