2009-01-08 330 views
4

如果我要按照What should a developer know before building a public web site?进行身份验证,那么我有哪些选项?用户身份验证

我从来没有使用PEAR,我不会开始。我已阅读约phpGALC,但尚未尝试。

认证后,权限/访问级别踢了进来。我不喜欢使用一个tinyint值来决定用户可以做什么,不能做什么,除了它不是很灵活。我最近写了一个部分系统,我指定了每种用户类型可以访问的访问类型,但是有更好的方法吗?

如果你想要一种语言,那么PHP5。

+0

您可能想看看https://github.com/delight-im/PHP-Auth,它既是框架不可知的,也是与数据库无关的。 – caw 2016-10-21 21:48:13

回答

0

我不使用它desides什么 用户能做和不能做的,除了其 不是很灵活的单一TINYINT值的大风扇。

这取决于...你是指将该值用作整数还是位域?

如果您只是将它用作数字(5级用户具有1-4级用户的所有能力,再加上一点点),那么,是的,这不是很灵活。

如果您将它用作位域,它会为您提供8组(任意组合)的任意组合的开启或关闭功能。我会称这种灵活性。而且,如果8个功能对您来说不够用,那么将tinyint(8位)更改为smallint(16位/功能),int(32位)或bigint(64位)应该超过8位足以满足我们大多数人可能写的任何应用程序。

+0

这是第一个。我确实使用int字段作为设置等的位 - 开/关的东西。 – Kim 2009-01-08 14:56:33

1

ACL和Auth是我目前正在处理的事情。我目前使用的是CakePHP,它为ACL提供了一个广泛的(尽管不是简单的)模块,并且是一种简单的身份验证方法。我也对答案感兴趣。

我收集了什么:

  • 了解验证输入,尤其是黑名单和白名单之间的差异
  • 仔细考虑您的电子邮件验证模式
  • 考虑你会有什么语言支持(讨厌小口音,til and等妨碍名字,例如Añagaza或Alérta)。
  • Roll-your-own or prebuilt?
  • ACL:保持简单,或者它可以吞噬整个。
  • 小心CSRF and XSRF
0

大多数框架都有内置的认证模块。所以你可能想结账Zend,CakePHP,Code Ignighter等。

另外一件容易混淆的事情是转义和编码数据之间的区别。当数据被编码时,事情变得更加灵活然后转义了。

+0

你是否建议我带他们的认证模块并使用它? 使用框架只会限制我。 – Kim 2009-01-08 14:55:11

1

认证相当简单。通过ACL或其他方式授权可能很复杂。

身份验证通常只是将用户名和密码与存储的凭据相匹配。只需使用SSL和散列密码使用盐。

授权可能是一个野兽,解决方案取决于您的要求。您可以尝试使用PhpGALC和Zend Framework ACL组件。这两个选项都具有角色,资源和可选特权,尽管它们的命名方式不同。 Zend ACL更简单,更通用(规则可以在代码中简单定义,并且不需要数据库)。如果您的角色,资源和权限不是静态的,那么使用Zend ACL,您必须编写代码来从数据存储中填充ACL。 phpGALC的一大优点是它具有一个Web GUI。我发现GU​​I很笨拙,但除非您真的了解ACL,否则考虑到ACL复杂性(如角色和资源继承),直接在数据库中进行更改可能会很危险。请记住,Zend ACL可以独立使用,除了Zend Exception之外,没有任何其他的Zend Framework依赖关系。

0

用户身份验证确保如果用户尝试访问应用程序拒绝自由访问的页面,它会将用户重定向到日志记录页面,并在成功登录后返回到请求的页面。一个这样的蛋糕的默认Auth的实现在下面的陷阱,方法和方式中解释。

http://enbake.com/cakephp-user-authentication-auth-component

框架犯规让你限制。而是授予你开发速度与现有模块和更有组织的代码。如果感兴趣,可以向你展示比较黑白框架。

+0

我认为这个链接是... http://blog.enbake.com/cakephp-user-authentication-auth-component/ – Ishu 2012-02-19 12:16:21