我已经使用快速入门示例实现了本地IdentityServer,并将 Aurelia-Opein-Id-Connect与之连接。设置工作正常。
我的问题是:
按原样运行Aurelia应用程序时,它会为我提供(权利要求)名称和网站。但是,当我更改open-id-connect-configuration-identity-server.ts并将“令牌”添加到response_type: "id_token token"
时,它并没有提供我的声明,即名称和网站。尽管现在它为我提供了一个access_token。
成功登录后如何使用此access_token并用于访问web-api?
请任何人分享他们的经验。
答案 0 :(得分:0)
要使用access_token
发出HTTP请求,您需要在请求标头上将其设置为Bearer令牌。当然,这可以用任何您想要的方式完成,一种简便的方法是编写一个interceptor
,它将为您发出的每个HTTP请求附加标题。
制作拦截器的方法是在main.ts
中执行以下操作:
import { HttpClient } from "aurelia-fetch-client";
export function configure(aurelia: Aurelia) {
// Other configuration
const httpClient = aurelia.container.get(HttpClient);
httpClient.configure((config) => {
config
.withInterceptor({
request(request) {
const token = getToken(); // Implement your preferred way to do this
if (token) {
request.headers.append("Authorization", `Bearer ${token}`);
}
return request;
}
});
});
// More configuration
}
此代码会将您使用access_token
检索到的getToken()
附加到您发出的任何HTTP请求中。
在这里检索令牌的一种方法是将令牌存储在单例类中,然后您从Aurelia容器中检索,就像检索httpClient
一样:
const currentUser = aurelia.container.get(CurrentUser);
但是,这完全取决于您的喜好。