我正在尝试用我的角应用程序中的oidc-client替换旧的oidc-token-manager,但我一直收到此错误 “没有回应的状态”,我已经看过brockallen样本来学习如何使用它,但到目前为止还没有运气。 这就是我的服务。
var config = {
client_id: "myClient"
, redirect_uri: "http://127.0.0.1:51899/callback.html"
, response_type: "id_token token"
, scope: "openid profile test"
, authority: "https://localhost:44369"
};
var mgr = new Oidc.UserManager(config);
和我的回调页面上的类似内容。
这就是我在mainController中的内容
var tokenManager = {
mgr: {}
};
tokenManager.mgr = oidc.tokenManager();
startSigninMainWindow(tokenManager);
function startSigninMainWindow(tokenManager) {
tokenManager.mgr.signinRedirectCallback().then(function (user) {
var data = user.state.some;
}, function (err) {
console.log(err); // err:'No state in response'
});
}
任何人都可以告诉我我做错了什么吗? 谢谢。 PS:顺便说一下,我甚至不再看到身份服务器中的登录屏幕
答案 0 :(得分:0)
就我而言,有人直接从UI代码调用/login
回调路由。 /login
路由仅应由SSO服务器(身份提供程序,无论您如何称呼)调用,而不应由UI本身调用。因此,在我们的authGuard
中,我们将this.router.navigate(['/login']);
替换为this.userManager.signinRedirect();
并清除了。
答案 1 :(得分:0)
就我而言,本地存储中存在垃圾。打开Chrome调试器的“应用程序”标签,然后清除所有本地和会话存储。然后重新加载该应用。
注意:作为开发人员,您需要了解 oidc客户端将会话/本地存储用于高速缓存。例如,如果您更改令牌的配置,它不会不刷新缓存。您必须手动清除存储。