Аутентификация пользователя - PullRequest
4 голосов
/ 08 января 2009

Если я должен следовать Что должен знать разработчик до создания общедоступного веб-сайта? при аутентификации, тогда какие варианты у меня есть?

Я никогда не использовал PEAR, и я не собираюсь начинать. Я прочитал о phpGALC , но еще не попробовал.

После аутентификации вступают в силу права / уровень доступа. Я не большой поклонник использования единственного значения tinyint, которое решает, что пользователь может и не может делать, кроме того, что оно не очень гибкое. Недавно я написал систему разделов, в которой я указываю, к какому типу доступа имеют доступ все типы пользователей, но есть ли что-то лучше?

Если вам нужен язык, тогда PHP5.

Ответы [ 5 ]

1 голос
/ 08 января 2009

Аутентификация довольно проста. Авторизация через ACL или любую другую может быть сложной.

Аутентификация обычно просто сопоставляет имя пользователя и пароль с сохраненными учетными данными. Просто используйте SSL и хеш пароли, используя соль.

Авторизация может быть чудовищной, и решение зависит от ваших требований. Вы можете попробовать PhpGALC и компонент Zend Framework ACL. Оба варианта имеют роли, ресурсы и дополнительные привилегии, хотя все они названы по-разному. Zend ACL проще и более универсален (правила могут быть определены просто в вашем коде, и для этого не требуется база данных). Если ваши роли, ресурсы и привилегии не являются статичными, то с помощью Zend ACL вам придется писать код для заполнения ACL из вашего хранилища данных. Большим преимуществом phpGALC является то, что он имеет веб-интерфейс. Я нашел GUI неуклюжим, но если вы действительно не понимаете свой ACL, вносить изменения непосредственно в базу данных может быть опасно, учитывая сложности ACL, такие как роль и наследование ресурсов. Помните, что Zend ACL может использоваться сам по себе без каких-либо других зависимостей Zend Framework, кроме Zend Exception.

1 голос
/ 08 января 2009

ACL и Auth - это то, над чем я сейчас работаю. В настоящее время я использую CakePHP , и он предоставляет обширный (хотя и не простой) модуль для ACL и простой способ проверки подлинности. Мне тоже интересны ответы.

Что я собрал:

  • Научитесь проверять ввод, особенно разницу между черными и белыми списками
  • Внимательно рассмотрите свой шаблон проверки электронной почты
  • Подумайте, какие языки вам нужно поддерживать (маленькие противные акценты, тильды и тому подобное мешают в именах, например, Añagaza или Alérta).
  • Сделай сам или готовый?
  • ACL: будь проще, иначе он может поглотить тебя целиком.
  • Осторожно о CSRF и XSRF !
0 голосов
/ 20 февраля 2011

Аутентификация пользователя гарантирует, что если пользователь пытается получить доступ к странице, приложение которой запрещает свободный доступ, оно перенаправляет пользователя на страницу входа и после успешного входа возвращается на запрошенную страницу. Одна из таких реализаций торта по умолчанию Auth объясняется в следующих ловушках, подходах и способах.

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

Фреймворк не делает вас ограниченными. Но скорее предоставляет вам скорость разработки с существующими модулями и более организованным кодом. Может показать вам сравнение ч / б фреймворков, если интересно.

0 голосов
/ 08 января 2009

Большинство фреймворков имеют встроенный модуль аутентификации. Так что вы можете проверить Zend, CakePHP, Code Ignighter и т. Д.

Также одна вещь, которая может сбить с толку, - это разница между экранированием и кодированием данных. Все становится намного более гибким, когда данные кодируются , а затем экранируются.

0 голосов
/ 08 января 2009

Я не большой поклонник использования единственного значения tinyint, которое определяет, что пользователь может и не может сделать, кроме его не очень гибкий.

Это зависит ... Вы имеете в виду использование значения как целого числа или как битового поля?

Если вы используете его просто как число (пользователь уровня 5 обладает всеми способностями пользователей уровня 1-4, плюс еще немного), то да, это не очень гибко.

Если вы используете его в качестве битового поля, оно дает вам 8 (наборов) возможностей, которые могут быть включены или выключены в любой комбинации для любого пользователя. Я бы назвал это гибким. И, если вам не хватает 8 возможностей, тривиально изменить tinyint (8 бит) на smallint (16 бит / возможности), int (32 бита) или bigint (64 бита), что должно быть больше достаточно для любого приложения, которое большинство из нас, вероятно, напишет.

...