2015-02-05 103 views
0

我正在使用asp.net mvc 5与owin安全性,我必须创建一个链接,将发送给用户的电子邮件。当用户点击链接时,他们将直接登录系统。直接从链接登录

我仍然无法弄清楚如何使用用户名和密码生成该链接..等等。

任何人都可以显示一些光请。

+2

你应该*永远不*在链接中包含用户名和密码。这是一个可怕的,**可怕的想法。相反,您可以添加一个伪记录用户的令牌(他们可以看到基本信息),但仍需要手动输入密码才能访问任何敏感信息。而且你需要在邮件中加入言辞,说明不要分享链接。我不知道如何轻松地将其与当前的安全系统集成,但我的要点是**不要在链接**中包含用户名和密码。 – mason 2015-02-05 17:26:54

+2

说明“必须”。作为一名开发人员,你的工作是向项目业主解释什么时候有什么是非常非常糟糕的主意。自动记录用户的链接是一个非常非常糟糕的主意。就个人而言,如果项目业主坚持要这样做,我会退出项目。 – 2015-02-05 20:43:29

+0

伙计们,我知道你是什么意思。但我不会直接使用用户名和密码。我必须加密或散列或做一些事情,以便在睁开眼睛时看不到它。 – kandroid 2015-02-06 12:47:51

回答

0

您不必使用用户名和密码生成链接 - 绝对不应该(@mason +1)。 如果您需要通过链接登录用户,您可以在用户数据库中生成并存储散列/ guid/etc,并通过电子邮件发送包含userId和散列的链接。 - >某事像:mysite.org/login?userid=123 &哈希= b89eaac7e61417341b710b727768294d0e6a277b

您可以创建一个动作以检查用户ID和散列匹配在数据库中的数据和登录用户。 ......就像

var user = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>()).FindByIdAsync(userId) 
if(user.Hash == hashFromTheLink) 
HttpContext.GetOwinContext().Authentication.SignIn(...) 
+0

我们决定不这样做。但你所说的是正确的答案。 – kandroid 2015-02-11 10:16:26