首页 > 解决方案 > 创建自定义基于用户的身份验证以用于 Blazor 服务器与身份身份验证

问题描述

我应该先说我对 .Net 和一般的 Web 开发非常陌生——这可能有一个非常简单的解决方案,我提前为这篇文章中包含的所有杂乱无章道歉。

本质上,我想要做的是要求用户登录到由站点管理员为他们创建的帐户 - 只需一个电子邮件和密码。从那里,我希望这些用户能够通过几个步骤来使用一些信息填充 SQL 数据库,并将数据库中的信息链接到用户以允许将来访问(我的计划是使用关系D B)

我试图通过 Blazor 开箱即用的身份验证来实现这一点,但是我遇到了几个问题:

我的第一个问题是无法将用户重定向到 Identity 提供的登录页面 - 理想情况下,此登录页面将是 Blazor 组件而不是 razor 页面,因此该页面将具有统一的布局,但是,这对我不起作用- 在重定向到登录页面之前,重定向到登录页面会导致网站主页出现尴尬的闪现。

我的第二个问题是尝试使用身份用户 ID 作为路由管理器的参数,因为它给我提供了一些错误,以及一个很长的字符串,让我相信 ID 可能被加密?(我无法理解这个身份验证系统中发生了什么)

所有这一切让我认为创建自己的身份验证会更简单,它可以更好地与 Blazor 组件 UI 一起使用(尽管我肯定可以不这样做),因为它是一个供内部使用的应用程序,我真的不'不需要身份验证提供的很多东西(双因素,锁定,所有其他东西)。但是,我不确定从哪里开始,因为简单地创建数据库表感觉好像不安全,而且我确实需要服务器管理员的授权功能来创建新的用户帐户等。

我想毕竟问题是,我应该继续尝试使用身份验证以使其与我正在做的事情合作,还是应该尝试创建自己的身份验证形式?

标签: authentication.net-coreasp.net-identityblazor

解决方案


我要说的是学习使用身份服务器。滚动您自己的身份验证是您应该留给专家的事情,否则您的数据将成为暗网上的下一组可用数据。

我怀疑您所说的长字符串是用户的 ID。它是 GUID 或 UUID,具体取决于您的学校教育。

我不确定您是否了解您的解决方案有两个 UI。服务器正在管理所有身份管理屏幕,它们可以被覆盖,但这些不是你的 Blazor 应用程序,在它们之间切换将是你提到的“尴尬的闪存”。

您可以为其他属性自定义这些屏幕,有很多关于此的帖子。您可以通过 API 创建用于部分更新的 DTO,这将更多地保持应用程序中的用户体验。


推荐阅读