我已经使用Quickstart示例实现了本地IdentityServer并将 Aurelia-Opein-Id-Connect连接到它。设置工作正常。
我的问题是:
response_type: "id_token token"
时,它并没有向我提供我的声明,即名称和网站。虽然现在它为我提供了access_token。如果有人可以分享他们的经验。
要使用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);
但是,这完全取决于您的喜好。