Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';建议如何处理由其他人注册的用户(即不能选择密码)?_C#_Asp.net Mvc 5_Asp.net Identity - Fatal编程技术网

C# 什么';建议如何处理由其他人注册的用户(即不能选择密码)?

C# 什么';建议如何处理由其他人注册的用户(即不能选择密码)?,c#,asp.net-mvc-5,asp.net-identity,C#,Asp.net Mvc 5,Asp.net Identity,我有一个应用程序,其中用户不是自行注册的,即另一个用户将他们添加到系统中,并通过电子邮件发送他们的登录详细信息。在创建用户和处理密码方面,最好的方法是什么 这种情况下,用户被其他人邀请进入系统,回答问卷,然后不需要再次登录,直到将来某个时候,他们可能会被其他人再次邀请,因此,理想情况下,他们需要在电子邮件中提醒自己的登录详细信息,而不是每次都要重置密码。显然,在理想的世界中,人们只会记住他们的密码,但在使用密码的情况下,访问的频率很低,这意味着人们根本记不住密码,而且这个过程需要尽可能避免麻烦,

我有一个应用程序,其中用户不是自行注册的,即另一个用户将他们添加到系统中,并通过电子邮件发送他们的登录详细信息。在创建用户和处理密码方面,最好的方法是什么

这种情况下,用户被其他人邀请进入系统,回答问卷,然后不需要再次登录,直到将来某个时候,他们可能会被其他人再次邀请,因此,理想情况下,他们需要在电子邮件中提醒自己的登录详细信息,而不是每次都要重置密码。显然,在理想的世界中,人们只会记住他们的密码,但在使用密码的情况下,访问的频率很低,这意味着人们根本记不住密码,而且这个过程需要尽可能避免麻烦,以确保用户参与

该网站的旧版本使用Webforms和ASP.Net成员身份以及加密密码,每次用户被邀请时都可以检索并发送给用户。在用户不提供自己的密码的情况下,识别的最佳实践是什么?是否有其他用于登录用户的选项,例如:

  • 电子邮件中提供的验证用户身份的唯一链接
  • 存储在
    AspNetUsers
    表中哪些邮件可以解密并发送

值得指出的是,具有管理员级别的网站访问权限的用户仍将具有通常的安全身份用户/通行证设置,我的问题只是与较低级别的用户有关。

在这种情况下,我将完全忘记密码。ASP.NET Identity为您提供了可用于此操作的一次性代码

在“如何通过邮件发送一次性代码”(这些代码由ASP.NET Identity本身生成)一节中向您展示:

string html=“请单击此链接确认您的帐户:
”;

您可以很容易地修改它,以及当用户单击该链接以匹配您希望在此处执行的操作时的行为。

在这种情况下,我会完全忘记密码。ASP.NET Identity为您提供了可用于此操作的一次性代码

在“如何通过邮件发送一次性代码”(这些代码由ASP.NET Identity本身生成)一节中向您展示:

string html=“请单击此链接确认您的帐户:
”;

当用户单击该链接以匹配您希望在此处执行的操作时,您可以轻松地修改该链接以及行为。

到底是什么问题?您必须向用户发送某种登录信息。你想预防什么?请你的问题详细说明你正在尝试做什么。为什么用户在登录之间不记得他们的登录详细信息?@CamiloTerevinto是的,不幸的是,这是一种情况,它涵盖了所有级别的用户,其中一些人不是很懂计算机,或者将使用共享机器。理想情况下,我希望完全取消密码,只需要一个唯一的链接来标识用户。@Progman根据要求更新了我的问题。这很难解释,但实际上只是在寻找关于可以使用哪些其他方法的建议,而不是通常的带有标识的哈希密码。最佳做法是永远不要存储密码(加密或不加密)。取而代之的是,存储一个加密的密码散列,这样就没有人,甚至是你,可以对实际的密码进行反向工程。使用的每种浏览器都有一个独特的链接,最简单的方法是查看浏览器历史记录。听起来你需要对安全性做更多的研究。每天忘记密码的用户与入侵您系统的用户是无法区分的。到底是什么问题?您必须向用户发送某种登录信息。你想预防什么?请你的问题详细说明你正在尝试做什么。为什么用户在登录之间不记得他们的登录详细信息?@CamiloTerevinto是的,不幸的是,这是一种情况,它涵盖了所有级别的用户,其中一些人不是很懂计算机,或者将使用共享机器。理想情况下,我希望完全取消密码,只需要一个唯一的链接来标识用户。@Progman根据要求更新了我的问题。这很难解释,但实际上只是在寻找关于可以使用哪些其他方法的建议,而不是通常的带有标识的哈希密码。最佳做法是永远不要存储密码(加密或不加密)。取而代之的是,存储一个加密的密码散列,这样就没有人,甚至是你,可以对实际的密码进行反向工程。使用的每种浏览器都有一个独特的链接,最简单的方法是查看浏览器历史记录。听起来你需要对安全性做更多的研究。每天忘记密码的用户与入侵您的系统的用户是无法区分的。我以前使用过这些密码,但由于有效时间跨度有限,我不确定它们在这种情况下是否有效。不过,可能会和他们玩一玩,看看他们是否能像@HereticMonkey在原始帖子中评论的那样按需工作,通过查看浏览器历史记录,这将很容易受到攻击。也许如果我将它与电子邮件中提供的密码结合起来,那么只有拥有原始电子邮件的人才能访问。@RossJ因为某种原因,它是一次性代码,您不能使用它两次。还有一种方法可以让你生成复制粘贴的代码,而不必点击链接哦,对了,我不知道它们实际上只工作一次。。。我认为它们的有效期与
UserManager
中指定的有效期一样长?我以前使用过它们,但由于有效期时间跨度有限,我不确定它们在这种情况下是否有效。不过,可能会和他们玩一玩,看看他们是否能像@HereticMonkey在原始帖子中评论的那样按需工作,通过查看浏览器历史记录,这将很容易受到攻击。也许如果
string html = "Please confirm your account by clicking this link: <a href=\"" + message.Body + "\">link</a><br/>";