gpt4 book ai didi

angular7 - 将自定义参数从角度 oidc-client 传递给 returnurl

转载 作者:行者123 更新时间:2023-12-05 03:58:03 36 4
gpt4 key购买 nike

我正在尝试将自定义参数传递给 angular oidc-client 中登录页面 IdentityServer 4 中使用的 returnURL。

根据我从 returnURL 收到的参数,我想绕过登录网站并将它们重定向到 IDP。我打算从角度将参数添加到特定页面,然后我想从那里重定向到登录。

下面的链接讨论了它们,但我无法理解。你们能帮忙吗?提前致谢。

Pass custom parameter to returnUrl used in login page Identity Server 4

https://github.com/IdentityServer/IdentityServer4/issues/909

C# AccountController.cs

public async Task<IActionResult> Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
var vm = await _account.BuildLoginViewModelAsync(returnUrl);


if (vm.IsExternalLoginOnly)
return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);

return View(vm);
}

角度 auth.service.ts

const settings: any = {
authority: environment.oauthUrl,
client_id: 'website',
redirect_uri: `${environment.applicationUrl}/auth.html`,
post_logout_redirect_uri: `${environment.applicationUrl}`,
response_type: 'id_token token',
scope: 'openid profile email profile nucleus',

silent_redirect_uri: `${environment.applicationUrl}/silent-renew.html`,
automaticSilentRenew: true,

monitorSession: true,
checkSessionInterval: 2000,

revokeAccessTokenOnSignout: true,
filterProtocolClaims: true,
loadUserInfo: true,

changePasswordUrl: `${environment.oauthUrl}/Manage/ChangePassword?returnUrl=${environment.applicationUrl}`
};

我期望来自 returnurl 的参数,并在 AccountController.cs 的登录方法中添加这样的条件。

if (vm.IsExternalLoginOnly || returnUrl.Contains("customparameter"))

最佳答案

如果有人正在寻找答案。我添加了路由,以便我可以从角度应用程序获取 clientid。

应用程序路由.ts

 { path: 'client/:id', component:ClientComponent }

在client.component.ts中

constructor(private authService: AuthService,private route: ActivatedRoute) { }

ngOnInit() {
const clientId=this.route.snapshot.params.id;
if(clientId!=null) {
this.authService.startSigninClient(clientId);
}
}

在 auth.service.ts 中

startSigninClient(clientid: string) {
this.mgr.signinRedirect({
extraQueryParams: {
client: clientid
},
})
.catch((err) => {
console.log(err);
});
}

现在,当我打开 angular_app/client/clientid 时,它会重定向到 client.component.ts 并且我正在调用 signinredirect,我在其中添加 extraQueryParams,它正在获取值并将 redirect_url 从客户端 oidc 发送到 dotnet 授权端点( accountcontroller.cs 在我的例子中)基于它我正在做我需要的逻辑来处理不同的客户端登录和 idps。

关于angular7 - 将自定义参数从角度 oidc-client 传递给 returnurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58279608/

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