无用户名和密码进行身份验证

时间:2017-11-15 04:07:01

标签: c# asp.net asp.net-mvc authentication

我有一个包含4列的数据库表(email,token,tokenDate(DateTime),isOnline(bool))

我在ASP.NET MVC中尝试做的是有一个应用程序,用户转到这样的页面Home/Index?email=xxxxx@xxxxxxx.com,当他们转到页面时,他们登录,现在我可以做到这一点他们转到页面是这样的:

  • 在数据库表中查找用户
  • isOnline标记为真
  • tokenDate设置为DateTime.Now
  • 创建一个随机token并将其设置为令牌
  • 使用与令牌相同的值创建一个Web Cookie

当有其他人(或同一个人)使用相同的电子邮件尝试转到页面时

  • 在数据库表中查找用户
  • 如果isOnline被标记为true并且cookie不存在,并且它确实检查了数据库中的那个,如果无法启动它们,如果成功,则可以输入。

我的问题是我想要创建什么令牌,以便原始用户仍然经过身份验证,因此如果他们关闭浏览器或转到其他页面,他们仍然可以转到他们认证的主页面?

1 个答案:

答案 0 :(得分:1)

用户在文本框中转到此Home/Index?email=xxxxx@xxxxxxx.com或用户类型电子邮件的页面

第1步:

  • 如果不存在,则在数据库表中查找用户 否认页面。
  • 如果存在,则Mark isOnline为true。
  • 将tokenDate设置为。 DateTime.UtcNow以便您可以稍后显示到当地时间 用户。
  • 使用创建随机令牌 GUID 并将其设置为数据库中的标记。
  • 创建一个 cookie 储藏 multiple 将GUID值作为标记值为1,将另一个值作为用户 电子邮件然后将cookie到期设置为年,因此即使用户也不会过期 关闭浏览器。

第2步:

现在,当用户转到Home/SomeOtherPage或身份验证页面Home/Index?email=xxxxx@xxxxxxx.com

  • 检查名称中是否存在cookie,如果存在,则从cookie获取电子邮件和令牌值,并检查数据库中的值,如果令牌与电子邮件匹配则用户通过身份验证。

  • Edit cookie并在cookie中设置另一个值,说明用户是否经过身份验证,因此下次用户访问时会检查经过身份验证的值,因为如果用户再次访问该页面,将无法再次访问数据库。

注意:

如果您可以在Cookie中设置电子邮件encrypt,那会更好。