【发布时间】:2017-04-24 04:06:52
【问题描述】:
好的,所以我正在通过做一些小项目来学习 ASP.Net MVC 5。我正在实施忘记密码功能。这是流程:
- 用户点击忘记密码链接。
- 重定向到用户输入电子邮件的页面。
- 接收令牌并重定向到页面以输入接收到的令牌
- 被重定向到“密码”和“确认密码”页面
现在所有这些页面都有其单独的 URL,并且页面应该按该顺序打开。但是如果我在我的浏览器链接中输入可能是第 3 步(输入令牌)或第 4 步的 URL(输入新密码)的 URL,我可以打开相应的页面。但我不希望那样。如果有人没有按照步骤 1 到 4 进行操作,则他们无法直接打开任何乱序 URL。如何实现以上功能。
注意:如果我们在控制器操作中添加[Authorize] 属性,那么无论我们在浏览器中访问哪个 URL,我们总是会被重定向到登录页面(前提是尚未登录)。我可以实现上述目标吗?所以,如果有人试图直接打开/VerifyToken页面,那么他应该被重定向到页面/SendEmailForReceiveingToken。
编辑 1
好的,事情就是这样。为了识别正确的人,我使用了令牌。但是为了检查我的数据库中的令牌字段,我想唯一地了解用户。为此,我正在使用电子邮件 ID。所以基本上我用电子邮件 ID 查询数据库以找到用户,然后检查该行中设置的令牌。但是如果有人直接去验证令牌,那么我将无法知道他的电子邮件ID。截至目前,我将电子邮件作为 token page 和 resetpassword page 之间的隐藏字段传递
编辑 2
所以在上午 12:00 用户得到了令牌。但他没有继续“重置密码”。 2分钟后他来了,直接进入/VerifyToken页面,输入token。所以现在我无法访问电子邮件 ID。我现在如何验证令牌。我不想查询整个令牌列并匹配相应的行。
【问题讨论】:
-
例如,任意用户直接打开第 3 页有什么问题?如果他没有通过电子邮件收到的有效令牌来输入,那么它将毫无用处。一旦您在下一步进行适当的验证以验证令牌,他将无法做任何事情。
-
如果他们去那个页面怎么办:如果他们没有令牌,他们就不会看到他们不应该看到的东西。
-
很公平。可能是我想太多了。感谢您的回复。 :)
-
@CodingYoshi:你能看到我的编辑吗
-
@Unbreakable 关于您的
Edit 1,如果您没有电子邮件并且用户使用 URL 查看页面,则将用户返回到错误页面。很简单。
标签: c# asp.net asp.net-mvc asp.net-mvc-5