gpt4 book ai didi

javascript - Oidc-Client js - 帧窗口超时 - 静默登录

转载 作者:行者123 更新时间:2023-12-05 00:25:50 25 4
gpt4 key购买 nike

app.js我有一个 AuthorizationInterceptor检查用户是否登录。当用户 token 过期时,它会遇到错误条件并出现 Frame window timed out 错误(见下文),然后进入重定向循环。我想进行静默登录,但我猜 iframe 出错了。我看不到它曾经重定向到 silent-callback.html - 它只命中callback.html :

app.factory("AuthorizationInterceptor", ['$q', '$injector', '$rootScope', '$window', 'authService', function ($q, $injector, $rootScope, $window, authService) {

var request = function (requestSuccess) {

var currentTime = Math.floor(Date.now() / 1000);

var deferred = $q.defer();
var oidcManager = window.translation.oidcUserManager;

oidcManager.getUser().then(function (u) {
if (u) {

if (u['expires_at'] < currentTime + 10) {
oidcManager.signinSilent()
.then(function (user) {
requestSuccess.headers['Authorization'] = "Bearer " + user["access_token"];
deferred.resolve(requestSuccess);
}, function (err) {
console.log('getuser error' + err); //this logs the below error.
authService.login();
deferred.resolve(true);
});
} else {
console.log('AuthInterceptor requestSuccess.headers');
requestSuccess.headers['Authorization'] = "Bearer " + u["access_token"];
deferred.resolve(requestSuccess);
}
}
else {
authService.login();
deferred.resolve(true);
}
});
return deferred.promise;

};

错误消息记录到控制台:
getuser errorError: Frame window timed out  app.js:92:41

Error: c.paramSerializer is not a function
p@http://localhost:5050/lib/angular/angular.min.js:88:204
n/h<@http://localhost:5050/lib/angular/angular.min.js:86:245
f/<@http://localhost:5050/lib/angular/angular.min.js:118:334
$eval@http://localhost:5050/lib/angular/angular.min.js:132:448
$digest@http://localhost:5050/lib/angular/angular.min.js:129:455
$evalAsync/<@http://localhost:5050/lib/angular/angular.min.js:133:30
e@http://localhost:5050/lib/angular/angular.min.js:43:93
Hf/l.defer/c<@http://localhost:5050/lib/angular/angular.min.js:45:491

这是我对 authService.login() 的设置和功能
 var config = {
authority: url,
client_id: "js",
redirect_uri: url + "/LocalizationAdmin/callback.html",
response_type: "id_token token",
scope: "openid profile api1",
post_logout_redirect_uri: url + "/LocalizationAdmin/index.html",
silent_redirect_uri: url + "/LocalizationAdmin/silent-callback.html",
automaticSilentRenew: true
};

function login() {
mgr.getUser().then(function (u) {
if (u) {
var currentTime = Math.floor(Date.now() / 1000);

if (u['expires_at'] < currentTime + 10) {
mgr.signinSilent()
.then(function (user) {
var idToken = user.id_token;
var dataIdToken = getDataFromToken(idToken);

}, function (err) {
mgr.signinRedirect();
});
}
}
else {
mgr.signinRedirect();
}
});

非常坚持这一点 - 任何帮助表示赞赏。

最佳答案

您是否将静默更新 URL (.../silent-renew.html) 添加到 IdentityServer 中允许的重定向 URI 列表中?

关于javascript - Oidc-Client js - 帧窗口超时 - 静默登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46772774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com