我正在尝试在 Blazor Web 服务器应用程序中使用用户登录时创建 cookie,但我有点迷失

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

我确实检查了很多关于如何做到这一点的视频和教程,现在我对有多少种可能的选择来实现它感到非常困惑,但没有一个真正适合我。我只是想了解创建一个简单程序结构的最佳方法是什么,其中用户在登录管理页面后设置创建一个 cookie,该 cookie 可能在 10 分钟内过期,但可以在每次访问授权页面时刷新属性。顺便说一句,这还没有使用实体框架。 这几天我正在试验它,我确实尝试使用控制器创建cookie,这是调用控制器函数创建cookie并让它使用await HttpContext.SignOutAsync创建cookie的正确方法吗?否则,我愿意接受任何其他建议,但不会再次向我指出文档,因为我确实尝试从那里理解,但我只会越来越困惑。顺便说一句,我现在正在开发 Net 6.0。感谢任何人为我指出一些好的资源,以更好地理解这个过程。

正如上面所解释的,我确实检查了文档并尝试使用控制器方法,但我想知道我做得是否正确,或者是 Blazor 中管理用户授权和身份验证的更好方法吗?喜欢 ProtectedSessionStorage 吗?

asp.net-core cookies blazor blazor-server-side httpcontext
1个回答
0
投票

您无法从 Blazor 服务器端会话设置 cookie。您无权访问 HttpContext,并且没有可用于在响应标头中返回 cookie 的传统请求/响应周期。

我成功的方法是以通常的 Blazor 方式设置登录表单。如果登录通过验证,那么我将重定向到可以访问 HttpContext 的传统 razor 页面(.cshtml 文件)。设置 cookie 后,我将重定向到登录后页面。

注销也可以采取同样的方法。

以下是该过程的基本概述。

<Blazor>
  @page "/login"
  - Render login form
  - Validate user input
  - Failure?
    - Display error message    
  - Success?  
    - Navigate to /dologin
</Blazor>

<Razor>
  @page "/dologin"
  - validate request
  - set auth cookie
  - navigate to /post-login
</Razor>

<Blazor>
  @page "/post-login"
  - validate cookie
  - continue session
  - ...
  - navigate to /logout
</Blazor>

<Razor>
  @page "/logout"
  - unset cookie
  - navigate to post-logout page
</Razor>

<Blazor>
  @page "/post-logout"
  - continue session
</Blazor>

显然这是一个简化的表示,并且没有详细介绍登录/注销后重定向逻辑。它也不涵盖您用于身份验证管理的抽象。在我的项目中,我使用

SignInManager
中的
Microsoft.AspNetCore.Identity
,但这只是我对实现的选择,与我对工作流程的选择无关。

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