创建基于自定义用户的身份验证以用于 Blazor Server 与身份验证
Create custom user based authentication for use with Blazor Server vs Identity authentication
首先我应该说我对 .Net 和一般的 Web 开发还很陌生 - 可能有一个非常简单的解决方案,对于本文中包含的所有杂乱无章,我提前表示歉意.
基本上我想做的是要求用户登录到站点管理员为他们创建的帐户 - 只需一个电子邮件和密码。从那里,我希望这些用户能够通过几个步骤来用一些信息填充 SQL 数据库,并将数据库中的信息 link 提供给用户以允许将来访问(我的计划是使用关系数据库来执行此操作)
我试图通过 Blazor 开箱即用的身份验证来实现这一点,但是我 运行 遇到了几个问题:
我的第一个问题是无法将用户重定向到 Identity 提供的登录页面 - 理想情况下,这个登录页面应该是一个 Blazor 组件而不是 razor 页面,这样页面就会有一个统一的布局,但是,这个对我不起作用 - 重定向到登录页面导致网站主页在重定向到登录页面之前出现尴尬的闪烁。
我的第二个问题是尝试使用 Identity 用户 ID 作为路由管理器的参数,因为它给我提供了一些错误,还有一个很长的字符串让我相信 ID 可能是加密? (我对这个身份验证系统中发生的事情一头雾水)
所有这些让我认为创建我自己的与 Blazor 组件一起工作的身份验证会更简单 UI 更好一点(尽管我绝对可以远离这个),因为它是供内部使用的应用程序,我真的不需要身份验证提供的很多东西(双因素、锁定、所有其他东西)。但是,我不确定从哪里开始,因为简单地创建一个数据库 table 感觉好像是不安全的,而且我确实需要服务器管理员的授权功能来创建新的用户帐户等。
我猜毕竟问题是,我应该继续尝试使用身份验证以使其与我正在做的事情合作,还是应该尝试创建我自己的身份验证形式?
我要说的是学习使用身份服务器。滚动你自己的身份验证是你应该留给专家的事情,否则你的数据将成为暗网上的下一组可用数据。
你说的那个长字符串我怀疑是用户的Id。是 GUID 还是 UUID 取决于你的学历。
我不确定您是否理解您的解决方案有两个 UI。
服务器正在管理所有身份管理屏幕,它们可以被覆盖,但这些不是您的 Blazor 应用程序,在它们之间切换将是您提到的“笨拙的闪存”。
您可以为其他属性自定义这些屏幕,有很多关于此的帖子。您可以通过 API 为部分更新创建 DTO,这将使应用程序中的用户体验更好。
首先我应该说我对 .Net 和一般的 Web 开发还很陌生 - 可能有一个非常简单的解决方案,对于本文中包含的所有杂乱无章,我提前表示歉意.
基本上我想做的是要求用户登录到站点管理员为他们创建的帐户 - 只需一个电子邮件和密码。从那里,我希望这些用户能够通过几个步骤来用一些信息填充 SQL 数据库,并将数据库中的信息 link 提供给用户以允许将来访问(我的计划是使用关系数据库来执行此操作)
我试图通过 Blazor 开箱即用的身份验证来实现这一点,但是我 运行 遇到了几个问题:
我的第一个问题是无法将用户重定向到 Identity 提供的登录页面 - 理想情况下,这个登录页面应该是一个 Blazor 组件而不是 razor 页面,这样页面就会有一个统一的布局,但是,这个对我不起作用 - 重定向到登录页面导致网站主页在重定向到登录页面之前出现尴尬的闪烁。
我的第二个问题是尝试使用 Identity 用户 ID 作为路由管理器的参数,因为它给我提供了一些错误,还有一个很长的字符串让我相信 ID 可能是加密? (我对这个身份验证系统中发生的事情一头雾水)
所有这些让我认为创建我自己的与 Blazor 组件一起工作的身份验证会更简单 UI 更好一点(尽管我绝对可以远离这个),因为它是供内部使用的应用程序,我真的不需要身份验证提供的很多东西(双因素、锁定、所有其他东西)。但是,我不确定从哪里开始,因为简单地创建一个数据库 table 感觉好像是不安全的,而且我确实需要服务器管理员的授权功能来创建新的用户帐户等。
我猜毕竟问题是,我应该继续尝试使用身份验证以使其与我正在做的事情合作,还是应该尝试创建我自己的身份验证形式?
我要说的是学习使用身份服务器。滚动你自己的身份验证是你应该留给专家的事情,否则你的数据将成为暗网上的下一组可用数据。
你说的那个长字符串我怀疑是用户的Id。是 GUID 还是 UUID 取决于你的学历。
我不确定您是否理解您的解决方案有两个 UI。 服务器正在管理所有身份管理屏幕,它们可以被覆盖,但这些不是您的 Blazor 应用程序,在它们之间切换将是您提到的“笨拙的闪存”。
您可以为其他属性自定义这些屏幕,有很多关于此的帖子。您可以通过 API 为部分更新创建 DTO,这将使应用程序中的用户体验更好。