我应该在这篇文章的开头说,我对.Net和web开发很陌生——可能有一个非常简单的解决方案,我提前为这篇文章中的所有漫无边际的内容道歉。
从本质上讲,我想做的是要求用户登录一个由网站管理员为他们创建的帐户,只需一封电子邮件和密码。从那时起,我希望这些用户能够完成几个步骤,用一些信息填充SQL数据库,并将数据库中的信息链接到用户,以便将来访问(我的计划是使用关系数据库(
我试图通过Blazor现成的身份验证来实现这一点,但我遇到了几个问题:
我的第一个问题是无法将用户重定向到Identity提供的登录页面-理想情况下,这个登录页面应该是Blazor组件,而不是剃刀页面,这样页面就会有一个统一的布局,然而,这对我来说不起作用-重定向到登录页面会导致网站主页在重定向到登录页之前出现尴尬的闪烁。
我的第二个问题是试图使用Identity用户id作为路由管理器的参数,因为它给我提供了一些错误,以及一个很长的字符串,这让我相信id可能被加密了?(我无法理解这个身份验证系统中发生了什么(
所有这些都让我想到,创建自己的身份验证会更简单,与Blazor组件UI一起工作会更好一点(尽管我肯定会做得更好(,因为它是一个内部使用的应用程序&我真的不需要身份验证提供的很多东西(双重因素、锁定和所有其他东西(。然而,我不确定从哪里开始,因为简单地创建一个DB表感觉不安全,而且我确实需要服务器管理员创建新用户帐户等的授权功能。
我想,毕竟问题是,我应该继续尝试使用身份验证,让它与我正在做的事情相配合,还是应该尝试创建自己的身份验证形式?
我要说的是学会使用Identity Server。滚动您自己的身份验证是您应该留给专家的事情,否则您的数据将是暗网上的下一组可用数据。
你所说的长字符串我怀疑是用户的Id。它是GUID或UUID,具体取决于您的学校教育。
我不确定你是否理解你的解决方案有两个UI。服务器正在管理所有的身份管理屏幕,它们可以被覆盖,但这些不是你的Blazor应用程序,在它们之间切换将是";尴尬的闪光";你提到的。
你可以自定义这些屏幕以获得其他属性——有很多关于这方面的帖子。你可以通过API为部分更新创建DTO,这将使用户体验更多地留在应用程序中。