0

我正在做一个关于银行账户的迷你项目。前端是ASP.NET,后端是SQL SERVER
当一个人创建一个帐户时,自动生成的帐号和密码将保存在数据库中,并且该帐号和密码将发送到该用户的电子邮件 ID。

这样用户就可以使用提供的帐号和密码登录。所以我的问题是如何自动生成该帐号和密码。我不知道该怎么做。

希望是最好的。谢谢你!

4

2 回答 2

2

首先,允许他们创建自己的密码并散列那个臭虫。永远不要通过电子邮件发送他们的密码。如有必要,通过电子邮件发送链接以重置,并在发送后不久使链接失效。

其次,要生成帐号,我会使用 Guid

var accountNumber = new Guid.NewGuid();

在您的数据库中,您存储密码的哈希版本,并在登录时对登录密码进行哈希处理并将其与数据库哈希进行比较。

同样在数据库中,如果您选择使用 Guid ,则帐号将是UniqueIdentifier 。

于 2013-10-08T17:39:35.410 回答
0

这是我能想到的最随机的方式:

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获取刚刚插入的行。

于 2013-10-08T17:42:42.440 回答