如果我要在身份验证上关注What should a developer know before building a public web site?,那么我有哪些选项?
我从未使用过PEAR,我不打算开始。我读过有关phpGALC但尚未尝试的内容。
在身份验证之后,权限/访问级别启动。我不是使用单个tinyint值决定用户可以做什么和不能做什么的忠实粉丝,除了它不是非常灵活。我最近编写了一个部分系统,我指定每个用户类型可以访问哪种访问权限,但有更好的东西吗?
如果你想要一种语言,那么PHP5。
答案 0 :(得分:1)
ACL和Auth是我正在研究的事情。我目前正在使用CakePHP,它为ACL提供了一个广泛的(虽然不是简单的)模块,以及一种简单的身份验证方法。我也对答案感兴趣。
我收集了什么:
答案 1 :(得分:1)
身份验证非常简单。通过ACL或其他任何方式进行授权可能很复杂。
身份验证通常只是将用户名和密码与存储的凭据相匹配。只需使用盐即可使用SSL和哈希密码。
授权可以是野兽,解决方案取决于您的要求。您可以尝试PhpGALC和Zend Framework ACL组件。这两个选项都具有角色,资源和可选权限,尽管它们的名称都不同。 Zend ACL更简单,更通用(规则可以在代码中简单定义,不需要数据库)。如果您的角色,资源和特权不是静态的,那么使用Zend ACL,您必须编写代码来填充数据存储中的ACL。 phpGALC的一大优势是它有一个Web GUI。我发现GUI很笨拙,但除非你真的了解你的ACL,否则考虑ACL复杂性如角色和资源继承,直接在数据库中进行更改会很危险。请记住,Zend ACL可以单独使用,除了Zend Exception之外没有任何其他Zend Framework依赖项。
答案 2 :(得分:0)
我不是一个使用单个tinyint值的忠实粉丝,它决定了什么 除了它之外,用户可以做也可以做不到 不太灵活。
这取决于......您是指将该值用作整数还是位域?
如果你只是将它用作一个数字(5级用户具有1-4级用户的所有能力,加上一点点),那么,是的,这不是很灵活。
如果您将其用作位域,它会为您提供8种(套)功能,可以为任何用户以任意组合打开或关闭。我称之为灵活。并且,如果8个功能对您来说还不够,那么将tinyint(8位)更改为smallint(16位/容量),int(32位)或bigint(64位)是非常简单的,这应该超过足以满足我们大多数人可能写的任何应用程序。
答案 3 :(得分:0)
大多数框架都内置了身份验证模块。所以你可能想要查看Zend,CakePHP,Code Ignighter等等。
另外一件容易混淆的事情是转义和编码数据之间的区别。当数据编码然后转义时,情况会更加灵活。
答案 4 :(得分:0)
用户身份验证确保如果用户尝试访问某个应用程序拒绝免费访问的页面,它会将用户重定向到日志页面,并在成功登录后返回到请求的页面。 Cake的默认Auth的一个这样的实现在下面的wrt陷阱,方法和方法中进行了解释。
http://enbake.com/cakephp-user-authentication-auth-component
框架不会让你受到限制。而是通过现有模块和更有组织的代码来授予您开发速度。如果感兴趣,可以向您展示比较黑白框架。