我正在研究angular,并尝试使用以下代码用jwt添加基本身份验证:
buffering=0
界面
private authProvider(
username: string,
password: string
): Observable<IServerAuthResponse> {
let accessToken: IServerAuthResponse;
this.http.post<any>(CCommonUrl.LOGIN, {
username,
password
}, { observe: 'response' }).subscribe((res) => {
// console.log(res.json);
console.log(res.headers);
console.log(res.headers.get('Authorization'));
accessToken.Authorization = res.headers.get('Authorization');
});
return of(accessToken);
现在export interface IServerAuthResponse {
Authorization: string;
}
正在显示令牌,但是我无法为console.log
赋值。代码失败并出现以下错误
core.js:7187错误TypeError:无法设置以下属性的“授权” 未定义 在SafeSubscriber._next(auth.service.ts:60)
任何见解都会有所帮助
编辑:我需要在界面内部获取价值。由于令牌出现在标题中,因此我无法将其直接映射到接口]
Edit2:就重复而言,该问题具有类,但在本例中是其接口
答案 0 :(得分:1)
接口不是对象的实例,因此您需要像
那样初始化对象let accessToken: IServerAuthResponse = {Authorization: ''};
然后您可以使用此行
accessToken.Authorization = res.headers.get('Authorization');
答案 1 :(得分:1)
首先需要初始化accessToken
变量。
export interface IServerAuthResponse {
Authorization?: string;
}
let accessToken: IServerAuthResponse = {}
...
}, { observe: 'response' }).subscribe((res) => {
// console.log(res.json);
console.log(res.headers);
console.log(res.headers.get('Authorization'));
accessToken['Authorization'] = res.headers.get('Authorization');
});