繁体   English   中英

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

[英]Authenticate without username and password

我有一个包含4列的数据库表(电子邮件,令牌,tokenDate(DateTime),isOnline(布尔))

我想在ASP.NET MVC中做的是有一个应用程序,用户可以转到该主页/ Home/Index?email=xxxxx@xxxxxxx.com这样的页面Home/Index?email=xxxxx@xxxxxxx.com ,当他们转到该页面时,便可以登录,现在我可以当他们转到页面时执行以下操作:

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

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

  • 在数据库表中查找用户
  • 如果isOnline标记为true ,并且cookie不存在,并且确实对数据库中的cookie进行了检查,则如果引导失败,则可以启动它们,如果成功,则可以进入它们。

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

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

第1步:

  • 如果不存在,请在数据库表中找到该用户,然后进入拒绝访问页面。
  • 如果存在,则将isonline标记为true。
  • 将tokenDate设置为。 DateTime.UtcNow以便以后可以显示到用户的本地时间。
  • 使用GUID创建随机令牌并将其设置为数据库中的令牌。
  • 创建一个cookie以存储多个值,其中一个以GUID值作为令牌,另一个则是用户电子邮件,然后将cookie到期时间设置为年,因此即使用户关闭浏览器也不会过期。

第2步:

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

  • 检查名称是否存在的cookie,如果存在,则从cookie获取电子邮件和令牌的值,并对照database中的值进行检查,如果令牌与电子邮件匹配,则对用户进行身份验证。

  • 编辑 cookie并在cookie中设置另一个值,说明用户是否已通过身份验证,因此,下次用户访问时,请检查authenticated的值,因为这样可以避免再次访问页面时再次访问数据库。

注意:

如果您可以在cookie中设置电子邮件的同时对其进行加密 ,那将更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM