为什么人们不使用 CFLOGIN?我记得几个月前 CF7 有问题,但我不记得它出了什么问题。
6 回答
我一直在使用 cflogin,效果很好。以你喜欢的方式工作可能有点棘手,但好处是巨大的。能够使用用户角色微调您的应用程序可以处理我的大部分基于权限的自定义。过去,会话管理存在一些问题,使其难以处理。打开 j2ee 会话似乎可以解决大部分问题。
一些流行的框架与 cflogin 不兼容,因此这可能是您看不到很多框架的原因之一。他们往往有自己的方法来保护应用程序功能。
我认为很多人对此感到沮丧,因为它有点古怪,他们放弃了。其他人有更复杂的安全需求,cflogin 无法完全解决这些需求,因此他们最终编写了自己的系统。具体来说,没有一种简单的方法来处理内容资产的权利。
我遇到的唯一问题是 CF8 中的角色。它的实现非常出色,但有点残酷,它不能按应有的方式工作。也许在CF9。
无论如何,构建您自己的基于角色的系统(为用户分配一个会话变量,其中包含系统可以检查的访问级别的逗号分隔列表)并不太难,我克服了它。
cfLogin 可能仍然值得使用的一个优点是它如何与服务器监视器关联以查看有多少人登录等。
上面关于使用 jsession 的观点是正确的,在所有 cf 应用程序中都值得这样做。我拖着自己完成的最好的事情之一就是按照我想要的方式工作。
不使用 CFLogin 有 3 个原因。
首先,它有点敏感,有点奇怪,而且没有多少人会想。你在这里放了一些代码,如果用户没有登录,它就会运行它……这很奇怪,你知道吗?早期存在一些错误也无济于事。
其次,虽然它具有 Web 应用程序所需的基本安全功能,但它并没有更进一步。你不能轻易地扩展它。谁说这就是每个人都想要的样子?
第三,也是最现实的,因为人们已经解决了这个问题。保护应用程序、身份验证和授权的问题领域已经在社区中考虑了足够长的时间,并且大多数人都知道如何去做。CFLogin 正在重塑大门。太少了,太晚了。
现在,这并不是说没有人使用它。我个人已经使用它几次,基本成功,但没有理由敲响警钟。对于我的大多数应用程序,不使用 CFLogin 更有意义。问题域是这样或那样的,CFLogin 并不总是以最智能的方式解决它。
请记住,CFLOGIN 有一个基本 HTTP Auth 的陷阱,即使在您调用 CFLOGOUT 之后,它也可以继续发送其用户 ID 和密码。
我知道这已经驱使一些高级用户远离它。
这是LiveDocs的摘录
注意:如果您使用基于 Web 服务器的身份验证或任何使用基本 HTTP 授权标头的表单身份验证,浏览器会继续将身份验证信息发送到您的应用程序,直到用户关闭浏览器,或者在某些情况下,关闭所有打开的浏览器窗口。因此,在用户注销并且您的应用程序使用 cflogout 标记后,直到浏览器关闭,cflogin 标记中的 cflogin 结构将包含已注销用户的用户 ID 和密码。如果用户注销并且没有关闭浏览器,则另一个用户可能会使用第一个用户的登录名访问页面。
就我而言(也假设其他一些人),主要原因是从其他平台迁移,比如 PHP。我的意思是我已经掌握了一些 ACL 开发的知识和习惯,并开始在 CF 中使用它们。
我知道如何使它对用户方便,对开发人员灵活且安全,并且不需要切换到 cflogin。
有时其他东西也会发生同样的情况,比如说在大多数情况下,我更喜欢使用自己的 JS 而不是使用 cfform/cfinput 来实现客户端验证。
因为它(仍然!)有严重的错误,比如这个:
http://www.raymondcamden.com/index.cfm/2009/8/7/Watch-out-for-this-CFLOGIN-Bug