我有一个Blazor应用程序,用户应该在外部登录页面(内部网(上登录,登录后我想重定向回应用程序主页(仪表板(。所以我想要的基本上是用户打开应用程序并单击登录按钮,然后应用程序路由到外部登录页面,用户输入他的用户名和密码,在用户登录后,我的应用程序的仪表板(主页(加载并显示。
所以我有一个登录按钮,当用户点击它时,他将被路由到";登录。剃刀";。在";login.rarzor";我有以下代码:
@page "/login"
@inject NavigationManager NavManager
@code {
protected override async Task OnInitializedAsync()
{
string homeUrl = "/";
//First attempt:
// This doesn't work
//NavManager.NavigateTo($"http://external.login.page?redirectUrl={homeUrl}", forceLoad: true);
// Second attempt: (doesn't work either)
// Navigate to external login
NavManager.NavigateTo($"http://external.login.page", forceLoad: true);
// Navigate to Home of blazor app (this is suppose to be executed after the user has submitted the above login form)
NavManager.NavigateTo($"{homeUrl}", forceLoad: true);
}
}
由于服务器响应错误,第一次尝试不起作用。第二次尝试不起作用,因为应用程序几乎立即路由到";家;在加载登录页面之后。
有人知道如何解决这个问题吗?
我明白你的意思,这有点像Azure Active Directory或任何外部提供商的登录,基本上重定向到仪表板或你想要的页面的过程应该发生在登录页面的级别上,而不是从你的应用程序,我的意思是,另一个应用程序中的登录页面应该接收一个参数,例如redirect_uri,所以代码看起来像这个
// Navigate to external login
NavManager.NavigateTo($"http://external.login.page?redirect_url={home_uri}", forceLoad: true);
在登录应用程序的级别上,如果登录尝试顺利,则获取该参数的值并将用户重定向到该值