我正在做一个关于银行账户的迷你项目。前端是ASP.NET,后端是SQL SERVER。
当一个人创建一个帐户时,自动生成的帐号和密码将保存在数据库中,并且该帐号和密码将发送到该用户的电子邮件 ID。
这样用户就可以使用提供的帐号和密码登录。所以我的问题是如何自动生成该帐号和密码。我不知道该怎么做。
希望是最好的。谢谢你!
我正在做一个关于银行账户的迷你项目。前端是ASP.NET,后端是SQL SERVER。
当一个人创建一个帐户时,自动生成的帐号和密码将保存在数据库中,并且该帐号和密码将发送到该用户的电子邮件 ID。
这样用户就可以使用提供的帐号和密码登录。所以我的问题是如何自动生成该帐号和密码。我不知道该怎么做。
希望是最好的。谢谢你!
首先,允许他们创建自己的密码并散列那个臭虫。永远不要通过电子邮件发送他们的密码。如有必要,通过电子邮件发送链接以重置,并在发送后不久使链接失效。
其次,要生成帐号,我会使用 Guid
var accountNumber = new Guid.NewGuid();
在您的数据库中,您存储密码的哈希版本,并在登录时对登录密码进行哈希处理并将其与数据库哈希进行比较。
同样在数据库中,如果您选择使用 Guid ,则帐号将是UniqueIdentifier 。
这是我能想到的最随机的方式:
Select NewID() as UserName, NewID() as Password
当然,你的用户不会喜欢这个,因为它真的很长:
UserName Password
------------------------------------ ------------------------------------
F050EF1A-1D6C-4A20-991C-F6B034AEBD2E 86C8D5FC-D09E-45FF-9A4F-041239082C5E
因此,让我们将其缩短为 8 个字符:
Select
SubString (Cast (NewID() as VarChar(50)), 1, 8) as UserName,
SubString (Cast (NewID() as VarChar(50)), 1, 8) as Password
这看起来更好:
UserName Password
-------- --------
63B1A547 D5566B8C
由于您希望在保存行时生成此信息,因此您可能有一个 INSERT 语句将帐户所有者的信息放入数据库中。修改该特定代码行以执行此插入:
Insert Into AccountTable (UserName, Password)
Select
SubString (Cast (NewID() as VarChar(50)), 1, 8) as UserName,
SubString (Cast (NewID() as VarChar(50)), 1, 8) as Password
当然..既然你知道账户所有者的名字,你可以查询回来得到所有者。一个更好的主意是在表上有一个标识列,并用于Scope_Identity
获取刚刚插入的行。