我使用angular 5来开发我的门户网站。一切正常,直到它在开发环境中。但是,作为生产要求,我将一些访问修饰符从private
更改为public
。现在它在这两种环境中都不起作用。我面临的问题是我现在无法登录。它现在 显示了URL栏中的登录凭据,即使我使用POST (之前工作正常),就像这样 -
http://localhost:4200/?username=abcd@gmail.com&password=12345
我无法登录,它停留在同一页面上。
供参考,这是我的登录方法 -
login(username, password) {
return this.http.post(this.loginUrl, { user: username, password: password})
.map((res: any) => {
return res;
})
}
然后我将我的更改还原(public
改为private
),但它不起作用。请帮我找出问题所在。
更新
我做了一些解决方法,发现 问题与HttpInterceptor 有关。如果我从模块中删除拦截器即{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }
,我的项目正在工作。那么,我怎样才能让它再次发挥作用呢?
答案 0 :(得分:0)
由于拦截器失败而发生这种情况。它没有获得authorization
值。因此,我修改了我的拦截器以仅在用户登录时修改请求,如下所示 -
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.authService = this.inj.get(UserService);
if(this.authService.loggedIn) // if logged in
req = req.clone({
setHeaders: {
'Content-Type': 'application/json',
authorization: this.authService.getCurrentUsername()
}
});
return next.handle(req);
}
现在正在运作!