我在本地主機上有一個rails BE應用程序:3000和localhost:4200上的FE。我試圖讓標記驗證自動完成,我明白這是通過在_tokenService.validateToken()方法中設置和檢索localStorage來實現的。爲什麼當我在_tokenService.init()上設置apiBase時,Angular2 token localStorage沒有設置?
這個問題似乎是,一旦我登錄(成功),我在我的瀏覽器中查看我的localStorage,發現沒有保存。因此,當我刷新頁面時,不存在localStorage作爲我的validateToken()方法的一部分進行驗證,因此會話不在瀏覽器中維護。
我在這裏錯過了什麼?我已經初始化這個命令的方式有錯嗎?我是否需要每次手動設置localStorage?如果是這樣,怎麼樣?
app.component.ts
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { Angular2TokenService } from 'angular2-token';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
constructor(private _tokenService: Angular2TokenService) {
this._tokenService.init({apiBase:'http://localhost:3000'});
}
}
登錄in.component.ts
import { Component, OnInit } from '@angular/core';
import { Angular2TokenService, SignInData } from 'angular2-token';
@Component({
selector: 'sign-in',
templateUrl: 'sign-in.component.html'
})
export class SignInComponent {
private _signInData: SignInData = <SignInData>{};
private _output: any;
constructor(private _tokenService: Angular2TokenService) { }
// Submit Data to Backend
onSubmit() {
this._output = null;
this._tokenService.signIn(this._signInData).subscribe(
res => {
this._signInData = <SignInData>{};
this._output = res;
}, error => {
this._signInData = <SignInData>{};
this._output = error;
}
);
}
}