2009-01-08 287 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