为什么人们不使用CFLOGIN?我记得几个月前在CF7上遇到了问题,但我不记得它有什么问题。为什么人们不使用<CFLOGIN>?
回答
我一直在使用cflogin,它工作的很好。以你喜欢的方式工作可能有点棘手,但好处是巨大的。能够用用户角色对应用程序进行微调,可以处理大部分基于权限的定制。过去,会话管理存在一些问题,导致难以处理。打开j2ee会话似乎会使大多数问题消失。
一些流行的框架与cflogin不兼容,所以这可能是您看不到它的原因之一。他们倾向于拥有自己的方法来保护应用程序功能。
我想很多人对此感到沮丧,因为它有点古怪,他们放弃了它。其他人有更复杂的安全需求,而cflogin并未完全解决这些需求,因此他们最终编写了自己的系统。具体来说,内容资产处理权利并不容易。
我唯一遇到的问题是CF8中的角色。它出色地实施了,并且有点残酷,它不适合它。也许在CF9中。
在任何情况下,构建您自己的基于角色的系统(为用户分配一个会话变量,以逗号分隔的系统可以检查的访问级别列表)并不是很难做,我已经完成了。
约cfLogin的一个很好的事情,很可能还是值得使用的是如何联系到服务器监视器,看看有多少人登录等
上述有关使用jsession是真实的,这是问题的关键值得在所有的cf应用程序中做。我最好的事情之一就是让自己完成我想要的工作。
我无法让它与NTLM身份验证*一起使用*(无论如何CF7)。 FWIW,它只是不按照广告的方式工作。我通常会将其伪装成正确运行,因为我想使用基于角色的安全性,但标记本身已被破坏。 – Tomalak 2009-08-31 08:58:17
在我的情况下(假设对于其他一些人),主要原因是从其他平台,例如PHP。我的意思是我已经已经在ACL开发中获得了一些知识和习惯,并开始在CF中使用它们。
我知道如何让它对用户很方便,对开发者和安全灵活,并且不要确实需要才能切换到cflogin。
有时候会发生同样的情况,比如在大多数情况下,我倾向于使用自己的JS实现客户端验证,而不是使用cfform/cfinput。
CFLogin未使用有3个原因。
第一个,这是有点棘手,有点奇怪,并没有工作有多少人会想。你在这里放了一些代码,如果用户没有登录,它就会运行它......这很奇怪,你知道吗?它也没有帮助,也有一些早期的错误。
第二,虽然它具有Web应用程序的基本要求的安全功能,但它不会再进一步。你不能很容易地扩展它。谁说这就是每个人都想要的?
第三,最现实的是,这是因为人们已经解决了这个问题。确保应用程序,身份验证和授权的问题已经在社区中得到了足够长的时间,而且大多数人都知道如何做到这一点。 CFLogin正在重塑这扇门。这太少了,太晚了。
现在,这并不是说没有人使用它。我个人已经使用过它几次,并取得了基本的成功,但没有理由敲响钟声。对于我的大多数应用程序来说,不使用CFLogin更有意义。问题领域是这样或那样的,CFLogin并不总是以最聪明的方式解决问题。
请记住,即使在调用CFLOGOUT之后,CFLOGIN仍然可以使用Basic HTTP Auth来继续发送其用户标识和密码。
我知道这促使一些高级用户远离它。
这里是LiveDocs
注意的摘录:如果您使用基于Web服务器的 身份验证或使用基本HTTP 授权头任何形式的 认证,浏览器 继续发送认证 信息到您的应用程序,直到 用户关闭浏览器,或在 某些情况下,所有打开的浏览器窗口。 其结果是,用户注销 和应用程序使用cflogout 标签,直到浏览器关闭后,在cflogin标签 的 cflogin结构将包含注销的用户的 用户名和密码。如果用户登录 并且未关闭浏览器,则 另一个用户可能会访问第一位用户登录时的页面 。
刚刚意识到,这不是CFLOGIN的错。这是HTTP基本认证的常见问题,搜索stackoverflow – Henry 2011-02-25 08:25:08
因为它(仍然!)有严重的错误,像这样的:
http://www.raymondcamden.com/index.cfm/2009/8/7/Watch-out-for-this-CFLOGIN-Bug
- 1. 为什么人们不使用base128?
- 2. pixel.gif,为什么人们使用它?
- 3. 为什么人们使用JSP?
- 4. Pthread:为什么人们会使用pthread_exit?
- 5. 为什么人们使用`Module.send(:prepend,...)`?
- 6. 为什么我们不得不使用私人?在C + +和Java?
- 7. 为什么我们使用`#include“stdafx.h”`而不是`#include <stdafx.h>`?
- 8. 为什么人们在C++中使用`main()`而不是`int main()`?
- 9. 为什么人们使用setTimeout(“func()”,...)而不是setTimeout(func,...)
- 10. 为什么人们不简单地使用“对象数据库”?
- 11. 为什么人们使用i = i + 1而不是i ++?
- 12. 代码档案?人们使用什么?
- 13. 什么是Autoconf?为什么人们使用它?我应该使用它吗?
- 14. 为什么不使用<< EOF代替cat << EOF?
- 15. 为什么人们使用评论作为商业逻辑
- 16. Javascript真和“真”为什么有人使用字符串而不是布尔值?</p> <pre><code>var myVar = "true"; //... if(myVar == "true") { //... }else{ //... } </code></pre> <p>为什么人们不要使用TRUE或FALSE:
- 17. 为什么我们不使用<h>作为超链接而不是<a>作为锚点?
- 18. 为什么人们不会在通用类中包装DependencyProperties?
- 19. 为什么人们说“因数法不好用!”在java中?
- 20. 他们为什么叫做“四人帮”?
- 21. 为什么人们不会在iOS5上使用MAC地址而不是UDID?
- 22. 为什么我们需要使用// <![CDATA [在@using语句中?
- 23. 为什么人们在SQL中使用ASC?
- 24. 为什么人们在大多数java库中使用org.proj.subproj
- 25. 为什么人们在ICommands上使用CommandManager.InvalidateRequerySuggested()?
- 26. 为什么人们在C++中如此使用__(双下划线)
- 27. 为什么人们在某些情况下使用变量?
- 28. 为什么人们使用Velocity和/或NVelocity?
- 29. 为什么人们使用ATL编程COM?
- 30. 为什么人们会在PHP中使用'$ a = $ b = 2;`?
什么是 “问题与会话管理”?你还记得吗? – Henry 2009-03-04 17:47:03
我隐约记住的问题是,如果您没有使用j2ee会话并且在大容量网站(同样,没有j2ee会话)时,关闭所有浏览器并不会终止您的身份验证,但当cfid是登录凭据时可能会被劫持重复使用。 – anopres 2009-03-04 17:54:37