【发布时间】:2020-09-14 08:43:03
【问题描述】:
我有一个 Blazor 应用程序,用户应该在外部登录页面(Intranet 内)上登录,登录后我想重定向回应用程序主页(仪表板)。 所以我想要的基本上是用户打开应用程序并单击登录按钮,然后应用程序路由到外部登录页面,用户输入他的用户名和密码,用户登录后,我的应用程序的仪表板(主页)被加载并显示。
所以我有一个登录按钮,当用户单击它时,他将被路由到“login.razor”。 在“login.razor”我有以下代码:
@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);
}
}
第一次尝试失败,因为服务器响应是错误的。 第二次尝试不起作用,因为在登录页面加载后应用程序几乎立即路由到“主页”。
有人知道如何解决这个问题吗?
【问题讨论】:
-
您的外部登录概念不正确,当您导航到外部登录时,外部登录应该将用户返回到您的 blazor 站点。您不必在外部登录后立即调用
homeUrl,它永远不会那样工作,因此您会立即看到homeUrl,用户进入登录页面。 -
在外部登录后,服务器自动重定向到自己的家……但我不想显示它的家。登录不返回用户。登录后我可以手动获取用户信息。我想要的只是让用户在外部登录表单上输入登录信息。之后我会从服务器手动获取用户数据。根据这个响应,我可以确定它是什么用户以及登录是否成功。唯一的问题是登录重定向到服务器主页,而不是我的 blazor 页面主页。