我需要在现有的Web表单中添加一些授权/身份验证逻辑。基本上,用户将输入他们的电子邮件地址,然后我针对现有数据库检查该电子邮件地址,如果存在,我会向该地址发送一封电子邮件,其中包含指向Web应用程序的激活链接。一旦用户点击该链接,我希望他们的客户被认为"授权"在短时间内(例如他们的浏览器会话)。然后,他们可以访问某些页面,直到他们的身份验证到期为止。
使用自定义ASP.NET表单身份验证非常容易,但在进行一些研究之后,目前在授权/身份验证方面似乎有更多选择。像ASP.NET身份2,Katana / OWIN等等,它变得非常压倒性。
我正在寻找关于目前在MVC4应用程序中实现类似内容的最简单方法的建议。如有必要,我应该可以将应用程序升级到MVC5。
答案 0 :(得分:1)
这与大多数密码重置使用的过程基本相同,因此您可以采用相同的方式处理它:
创建一个表来跟踪这些"身份验证"。你几乎只需要一个令牌列,一个日期时间列,一个布尔列。日期时间可以跟踪令牌的创建日期和时间,然后您可以在代码中使用它来根据所需的时间范围计算它是否太旧,或者您可以跟踪到期日期和令牌的时间,然后只需检查您的代码是否已过期。布尔值将通过跟踪您发送的电子邮件中的令牌链接来跟踪电子邮件地址是否已确认。
在初始表单中,您收集电子邮件地址并将其与盐和单向加密相结合以生成令牌。您发送的电子邮件包含包含该令牌的链接。将令牌和相应的日期时间值保存在表格中。
在用户单击链接后转到的页面上,您使用URL中的标记查找表中的匹配行,检查日期值,并将布尔值设置为true以进行确认。然后,将令牌存储在Session
。
在每个后续请求中,检查1)Session
中的令牌和2)该令牌是否仍然有效(在数据库中查找并检查日期时间和确认状态) 。如果令牌不存在或不再存在,请删除该行,从Session
中删除令牌,然后将用户重定向到原始电子邮件地址集合表单。否则,允许用户查看其中的任何内容。
答案 1 :(得分:0)
最简单的方法是为用户提供数据库表,并检查用户身份验证,如果使用FormsAuthentication.RedirectFromLoginPage,身份框架为组和角色管理提供了更多的安全性和加密选项。
http://msdn.microsoft.com/en-us/library/ka5ffkce(v=vs.110).aspx