【发布时间】:2020-07-03 21:29:44
【问题描述】:
我正在使用 ASP.NET Razor 页面构建应用程序。
我已经使用 .NET Identity 实现了注册和登录。在我的 _Layout 部分视图中,我检查是否有User.Identity.IsAuthenticated。如果不正确,则会显示指向注册和登录页面的超链接。
现在,如果User.Identity.IsAuthentiated 为真,我想显示一个用于注销的超链接。但是,这个不需要单独的 Razor 页面。我只是想注销并重定向到 Index。我考虑过使用处理程序方法,例如:
public async Task<IActionResult> OnPostLogoutAsync()
{
await signInManager.SignOutAsync();
return RedirectToPage("/Index");
}
我是否可以从每个 Razor 页面访问它?或者有没有其他方法可以解决我的问题?
我想到的其他事情:
将此实现为 PageModel 的扩展方法。然而,对我来说,这个解决方案似乎很笨拙和欺骗。默认情况下,我需要将
SignInManager<>注入每个 Razor 页面,我觉得这是错误的。创建 MVC 控制器。一个可行的简单解决方案。但是,我想知道是否可以使用普通的 Razor Pages 来做到这一点。
将模型添加到 _Layout 局部视图。但是,对我来说,要访问模型需要从
PageModel继承的RedirectToPage方法。在这种情况下,我会出错。因此,如果我不从PageModel继承,我需要找到另一种重定向到另一个 Razor 页面的方法,这类似于第 2 点,但需要额外的步骤和更笨拙。
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-core razor