我有一个运行角度为2的asp.net核心应用程序。我正在使用oidc-client.js库来处理登录。目前,如果用户已经登录并跟随指向该站点的链接,则auth正常运行并且用户被带到正确的页面。但是,如果他们没有登录,则get弹回到登录页面就好了,使用正确的url返回到站点,但最终会被带到/ auth-callback页面。此时,重定向URL会丢失,并且在auth-callback之后它们会在站点的默认路径上结束。
我正在寻找的是oidc-client库中是否有任何选项可用于在auth-callback调用之后保留正确的url?通过文档和示例,没有任何东西跳出来。或者我自己要把东西放在一起?
答案 0 :(得分:1)
好吧,您必须在资产中创建一个单独的html页面来处理获取令牌并在登录重定向后将其存储
您可以在/ assets文件夹中创建redirect_page.html
<script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.4.1/oidc-client.min.js"></script>
<script>
var config = {
userStore: new Oidc.WebStorageStateStore({ store: window.localStorage })
};
var mgr = new Oidc.UserManager(config);
mgr.signinRedirectCallback().then(() => {
window.history.replaceState({},
window.document.title,
window.location.origin);
window.location = "/";
}, error => {
console.error(error);
});
</script>
并设置您的userManager配置
var config = {
...
redirect_uri: `${clientRoot}/assets/redirect_page.html`,
}
答案 1 :(得分:1)
在客户端代码中,当您调用signinRedirect
时,需要设置state属性以供以后使用,例如new Oidc.UserManager().signinRedirect({state:window.location.href});
。
然后在回调页面中可以使用它:
mgr
.signinRedirectCallback()
.then(function (user) {
window.history.replaceState({}, window.document.title, window.location.origin + window.location.pathname);
window.location = user.state || "/";
});