dc_*_*a98 7 cookies setcookie angular-cookies angular ngx-cookie-service
我正在使用ngx-cookie-service包来存储一些与我的应用程序相关的数据。我需要将此 cookie 保存在基本路径上'/',因此每次我都确切地知道如何检索它。我的这个 cookie 需要更新,当发生这种情况时,新的 cookie 必须存储在相同的路径中(所以在 中'/')。问题是,有时当我刷新页面时,新的 cookie 会保存在新路径中,因此当我尝试用它检索它时this.cookieService.get(cookieName, '/')显然会失败。尽管我明确声明使用'/'as path ,但还是会发生这种情况。它并不总是发生,这会导致调试更加困难。
这是我使用cookies的服务
const urlParamsCookieName = 'errepiuapp-url-params';
/**
* This service keeps track of the keys used to retrieve objects from the backend.
*/
@Injectable({
providedIn: 'root'
})
export class KeyLookupService {
private _lookupUrlSegments = ['students', 'macro', 'lto', 'sto', 'reports'];
private _paramsMap$: BehaviorSubject<Map<string, any>>;
private get paramsMap() {
return this._paramsMap$.getValue()
}
constructor(
private cookieService: CookieService,
private router: Router
) {
if (!this.router.url.includes('auth') && !this.cookieService.check(urlParamsCookieName)) {
this.router.navigate(['/auth']);
}
this._paramsMap$ = new BehaviorSubject<Map<string, any>>(
new Map<string, any>(
this.cookieService.check(urlParamsCookieName) ?
this.getParamsFromCookie().map((value, i) => [this._lookupUrlSegments[i], value]) :
this._lookupUrlSegments.map(segment => [segment, null])
)
);
this._paramsMap$.subscribe(_ => {
this.updateCookie(); //*********** PROBLEM HERE ***********
});
this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
map(event => {
this.updateCookie(); //*********** PROBLEM HERE ***********
})
).subscribe();
this.updateCookie(); //*********** PROBLEM HERE ***********
}
addParam(key: string, value: any) {
this._paramsMap$.next(this.paramsMap.set(key, value));
}
public getParams(...lookupKeyword: string[]): Map<string, any> {
if (lookupKeyword) {
return new Map<string, any>([...this.paramsMap.keys()]
.filter(key => lookupKeyword.includes(key))
.map(key => [key, this.paramsMap.get(key)]));
}
return this.paramsMap;
}
private getParamsFromCookie(): any[] {
return Array.from(this.cookieService.get(urlParamsCookieName).split(','));
}
private updateCookie() {
if (this.cookieService.check(urlParamsCookieName)) {
this.cookieService.delete(urlParamsCookieName, '/');
}
this.setCookie();
}
private setCookie() {
this.cookieService.set(urlParamsCookieName, [...this.paramsMap.values()].toLocaleString(), undefined, '/');
}
}
Run Code Online (Sandbox Code Playgroud)
import { CookieService } from 'ngx-cookie-service';
...
let Future = toInteger(Date.now()) + 5 * 60000;
this.cookies.set('session', data, {
expires: Future,
path: '/',
sameSite: 'Strict'
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3225 次 |
| 最近记录: |