【发布时间】:2011-10-18 19:39:45
【问题描述】:
好的,我是 Web 开发的新手,所以我可能会弄错其中一些术语。我提前道歉。
我无法理解身份验证的不同元素。似乎有人建议不要使用每种方法,尽管并非总是有明确的理由。我正在为可以访问数据库的公司构建 Web 应用程序,因此我想确保它是安全的。
所以我见过三个常用的存储信息的地方。
FormsAuthentication.SetAuthCookie()。这存储了一个会话 cookie,该 cookie 将随浏览器过期,客户端上没有任何敏感信息。但是,它只能存储一个值。 Thisstackoverflow 的答案显示了一种在这里存储多个值的方法,但是给出它的人说不要使用它,尽管不是为什么。
FormsAuthenticationTicket。我不知道这些信息存储在哪里,但它允许使用一种简单的方法来存储多个值。根据documentation,保护它需要调用 Encrpty() 来存储,并调用 decrypt() 来检索。这看起来很浪费,但我知道什么。
Session["SomeRef"] = new CustomObject()。 question 中的第二个答案解释了如何执行此操作,但对其的评论称它很危险,因为它可能被盗。这对我来说似乎是最好的方法,因为信息仍然存储在服务器上,并且可以存储多个值。
我找不到这些方法的任何比较,也找不到关于在验证用户身份后存储多条信息的“最佳实践”方式的良好解释。该信息只是用户的姓名和他们的用户 ID。
【问题讨论】:
-
顺便说一句,如果用户名是唯一的,则不需要存储用户 ID。只需向该数据库列添加唯一索引,查找速度就像使用 ID 一样快。
-
是的,但我想要各种显示用途的名称,以及用于在编辑期间记录“更新用户”信息的 ID。
-
这个问题值得更多的支持; +1
标签: asp.net-mvc-3 authentication session-cookies