asp.net-mvc - 从 _Layout.cshtml 重定向到另一个页面
问题描述
如何在 asp.net core razor 中重定向到 _layout.cshtm 页面中的另一个页面。
我正在进行验证并且用户已登录,如果没有,它将被重定向到另一个页面。
@using Microsoft.AspNetCore.Identity
@using CronoParque.Model
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
@if (SignInManager.IsSignedIn(User))
{
<form asp-controller="Account" asp-action="Logout" method="post" id="logoutForm" class="navbar-right">
<ul class="nav navbar-nav navbar-right">
<li>
<a asp-page="/Account/Manage/Index" title="Manage">Ola @UserManager.GetUserName(User)!</a>
</li>
<li>
<button type="submit" class="btn btn-link navbar-btn navbar-link">Sair</button>
</li>
</ul>
</form>
}
else
{
// targeting here
}
解决方案
回答
@if (SignInManager.IsSignedIn(User))
{
// normal stuff
}
else if (!Context.Request.Path.ToString().Contains("/About"))
{
// If we aren't processing a request for the target page,
// then redirect to it.
Context.Response.Redirect("/About");
}
也许一个更好的答案
您的问题的用例可能是将未经授权的请求重定向到登录页面。在这种情况下,请使用内置的 razor pages 授权 API。
services
.AddMvc()
.AddRazorPagesOptions(options => {
options.Conventions.AuthorizePage("/Contact");
});
上面的代码进入Startup
>ConfigureServices
方法。
在上面的示例中,API 将未经授权的请求重定向到/Contact
.
推荐阅读
- graphql - Apollo 客户端:在创建过程中进行乐观更新
- java - 我如何在这个电梯上加一个柜台?
- python - 如何在 Python 中定义乌龟而不创建新乌龟?
- javascript - 使用requirejs在数据表上单击事件
- git - 如何从 TFVC 存储库中挑选到 Git 存储库?
- python - 没有主机密钥的气流 SSHHook
- python - 使用 python 客户端库从日志文件中导出 promethous 指标
- tcl - 如何从 TCL 的测试文件中获取测试文件的名称
- azure-active-directory - 是否可以验证 Azure Active Directory 用户的密码
- reactjs - 如何通过 onPress 将新值传递给 Redux 存储?