问题原因是 Angular Social Login 不正确地在用户注销后清除计算机上的cookie,因此即使用户再次尝试登录也无法正常登录。
以下是使用 ngx-cookie-service 来手动清除cookie的示例代码,以确保在注销后Angular Social Login能够正常工作:
首先,在app.module.ts文件中导入 CookieModule:
import { CookieModule } from 'ngx-cookie';
@NgModule({
imports: [ CookieModule.forRoot() ]
})
export class AppModule { }
然后,在auth.service.ts文件中将ngx-cookie-service注入输入变量中,如下所示:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, BehaviorSubject } from 'rxjs';
import { CookieService } from 'ngx-cookie-service';
@Injectable({
providedIn: 'root'
})
export class AuthService {
constructor(
private http: HttpClient,
private cookieService: CookieService
) { }
// 添加一个方法,用于清除cookie
deleteCookies(): void {
this.cookieService.delete('accessToken');
this.cookieService.delete('userId');
}
// 添加logout()方法,以便调用删除cookie的方法
logout(): void {
this.deleteCookies();
//其他逻辑;例如路由导航等
}
}
最后,调用 AuthService 的 logout() 方法以确保在用户注销后删除cookie,以便再次登录。
import { Component } from '@angular/core';
import { AuthService } from './auth.service';
@Component({
selector: 'app-logout',
template: `
`
})
export class LogoutComponent {
constructor(private authService: AuthService) {}
logOut(): void {
this.authService.logout();
}
}