Angular 没有找到返回404的令牌

Angular 没有找到返回404的令牌,angular,jwt,Angular,Jwt,我想我在代码的某个地方犯了一些错误 我试图访问一个端点,该端点返回其他路由的所有注册用户的JSON列表。此路由需要管理员令牌 现在,管理员可以注册并登录以获得分配的令牌 我在将管理员路由的令牌传递到学生路由时遇到问题 我正在处理getAllExtensionAgents(),因此对getAllExtensionAgents()端点的请求将返回其他路由的所有注册用户的JSON列表 ApiService.ts import { Injectable } from '@angular/core'; i

我想我在代码的某个地方犯了一些错误

我试图访问一个端点,该端点返回其他路由的所有注册用户的JSON列表。此路由需要管理员令牌

现在,管理员可以注册并登录以获得分配的令牌

我在将管理员路由的令牌传递到学生路由时遇到问题

我正在处理
getAllExtensionAgents()
,因此对getAllExtensionAgents()端点的请求将返回其他路由的所有注册用户的JSON列表

ApiService.ts

import { Injectable } from '@angular/core';
import { environment } from '../../environments/environment'
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Router } from '@angular/router';
import { Logs } from './api.model';
import { Observable } from 'rxjs';
@Injectable({
    providedIn: 'root'
})
export class ApiService {
    ApiURL = environment.apiURL;
    myToken: string;

    constructor(private http: HttpClient, private router: Router) {
        this.getToken();
    }

    httpOptions = {
        headers: new HttpHeaders({
            'Content-Type': 'application/json',
            'x-access-token': 'localStorage.getItem(token)'

        })
    };

    registerUser(data: Logs) {

        return this.http.post(this.ApiURL + 'admin/auth/signup', data, { headers: this.httpOptions.headers })

    }

    loginUser(data: Logs) {
        return this.http.post(this.ApiURL + 'admin/auth/login', data) as Observable<{ secret: string, token: string }>;
    }

    getAllExtensionAgents(myToken: any) {
        return this.http.get(this.ApiURL + '/api/v1/admin/ea/', this.httpOptions)
    }

    storeToken(token: string) {
        return localStorage.setItem('token', token);
        console.log('get tok', token)
    }

    getToken() {
        this.myToken = localStorage.getItem('token');
        // console.log('local storage', this.myToken)
    }
}
从'@angular/core'导入{Injectable};
从“../../environments/environment”导入{environment}
从'@angular/common/http'导入{HttpClient,HttpHeaders};
从'@angular/Router'导入{Router};
从“/api.model”导入{Logs};
从“rxjs”导入{Observable};
@注射的({
providedIn:'根'
})
出口级服务{
ApiURL=environment.ApiURL;
myToken:string;
构造函数(专用http:HttpClient,专用路由器:路由器){
这个。getToken();
}
httpOptions={
标题:新的HttpHeaders({
“内容类型”:“应用程序/json”,
'x-access-token':'localStorage.getItem(token)'
})
};
注册服务器(数据:日志){
返回this.http.post(this.ApiURL+'admin/auth/signup',数据,{headers:this.httpOptions.headers})
}
登录用户(数据:日志){
将this.http.post(this.ApiURL+'admin/auth/login',data)作为可观察数据返回;
}
GetAllExtensionAgent(myToken:any){
返回this.http.get(this.apirl+'/api/v1/admin/ea/',this.httpOptions)
}
storeToken(标记:字符串){
返回localStorage.setItem('token',token);
console.log('get tok',令牌)
}
getToken(){
this.myToken=localStorage.getItem('token');
//console.log('localstorage',this.myToken)
}
}

我建议使用HttpInterceptor在每个请求中传递令牌

您的代码将被删除

 Injectable()
    export class I2 implements HttpInterceptor {

        constructor(
    private injector: Injector
    ) {
    }
        intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

            const modified = req.clone({setHeaders: {'x-access-token': localStorage.getItem(token)}});
            return next.handle(modified);
        }
    }

何时调用storeToken?我认为当您调用API服务登录服务器时,将创建令牌。但是在您的代码中,构造函数首先获得令牌?这就是为什么找不到令牌的原因。谢谢,但它仍然不起作用,当前正在尝试验证返回undfiedDid的授权u交叉检查访问令牌在标头和本地存储中都有值。此外,您还可以尝试首先使用任何REST客户端(如POSTman)检查令牌的真实性,然后尝试在Angular中使用相同的令牌。
@NgModule({
    imports: [BrowserModule, HttpClientModule],
    declarations: [AppComponent],
    providers: [

        {
            provide: HTTP_INTERCEPTORS,
            useClass: I2,
            multi: true
        }
    ],
    bootstrap: [AppComponent]
})
export class AppModule {
}