导航栏中的登录时重定向URL

问题描述 投票:0回答:1

我一直在构建一个剃须刀页面ASP.Net Core 3.1网站,并且有些页面的内容未经身份验证即可见,并且在对用户进行身份验证时,它会显示其他信息。

[当用户访问需要完全授权的页面时,它会立即将他们带到AzureAD登录页面,将他们登录,然后将他们重定向到他们刚刚所在的页面。

在需要授权才能查看其他详细信息的页面标题上单击登录链接时,会将其带到AzureAD登录页面,进行登录,然后将其重定向到索引页面。我希望此链接具有相同的行为,并将其重定向到刚打开的页面。

_ LoginPartial.cshtml

@if (User.Identity.IsAuthenticated)
{
<ul class="nav navbar-nav ml-auto">
    <li class="navbar-text nav-item">Hello @User.FindFirst(System.Security.Claims.ClaimTypes.GivenName).Value!</li>
    <li class="nav-item"><a class="nav-link" asp-area="AzureAD" asp-controller="Account" asp-action="SignOut">Sign out</a></li>
</ul>
}
else
{
    <ul class="nav navbar-nav ml-auto">
        <li class="nav-item"><a class="nav-link" asp-area="AzureAD" asp-controller="Account" asp-action="SignIn" >Sign in</a></li>
    </ul>
}

示例

例如,如果用户通过QR码获得链接,则该链接不会自动登录。当他们单击登录链接时,它将用户重定向到索引页面。然后,用户需要返回QR码应用,然后重新扫描代码或重新单击链接以返回同一页面。

c# asp.net-core .net-core azure-active-directory razor-pages
1个回答
0
投票

您可以自定义逻辑以在Razor页面应用程序中实现它:

  1. 在Pages文件夹中添加Account razor页面,并添加一种方法以当前页面的路径对身份验证质询进行分类:

    public IActionResult OnGetSignIn(string path)
    {
    
        var redirectUrl = Url.Content("~/");
        return Challenge(
            new AuthenticationProperties { RedirectUri = path },
            AzureADDefaults.AuthenticationScheme);
    }
    

在_LoginPartial中,修改路径并设置路径,如:

    <li class="nav-item">
        <a class="nav-link text-dark"  asp-area="" asp-route-path="@Context.Request.Path" asp-page="/Account" asp-page-handler="SignIn" >Sign in</a>
    </li>

通过用户身份验证后,用户将被重定向到AuthenticationProperties中的RedirectUri配置。

© www.soinside.com 2019 - 2024. All rights reserved.