Зачем мне это?
Просто в последнее время я нахожусь в поиске библиотеки авторизации для CodeIgniter. А как раз то? что это делает.
И казалось бы библиотека уже не новая, и информация по ней имеется, но всё равно осталось ощущение, что нужно сделать себе памятку как с этим Танком обращаться. Заодно на русский немного переведу.
Инсталляция довольно простая и укладывается в несколько пунктов:
- Скачать/распаковать
- Папку application скопировать в папку с приложением
- Папку captcha скопировать в папку CodeIgniter (капча у меня не заработала, но об этом ниже)
- С помощью файла schema.sql создать таблицы БД
- В настройках вашего приложения редактировать файл config.php и установить параметр $config['sess_use_database'] = TRUE.
В принципе библиотека готова к работе.
По поводу капчи подробнее
Капча по умолчанию использует штатный плагин CodeIgniter, и она у меня категорически не встала как рыба об лёд. Может я что не так делал, а может не я. Но я так понял, что это не только моя проблема, и что многие сталкиваются с этим.
С этим мне ещё предстоит разобраться. Если не удастся разобраться можно использовать Recaptcha. Говорят работает 100%, не пробовал поскольку работал на локальном проекте. Я пока совсем отключил капчу в настройках.
Кстати, все настройки библиотеки хранятся в файле config/tank_auth.php
Использование библиотеки. 1
У библиотеки довольно развитый интерфейс. Готовый контроллер auth имеет следующие функции:
- login – страница входа в систему
- logout – соответсвенно выход
- register – регистрация
- send_again – ссылка в духе “Повторить письмо с кодом активации”
- activate – действие активации. Обычно открывается из секретной ссылки в письме
- forgot_password – для тех кто забывает пароли
- reset_password – сбросить забытый пароль и установить новый
- change_password – поменять пароль
- change_email – ссылка в духе “Изменить e-mail”
- reset_email – ссылка активации нового e-mail, которая должна быть в письме
- unregister – удалить пользователя
Полный джентельменский набор и ничего лишнего. При всём великолепии набора функционала, считаю однозначно необходимым изменять представления (views) соответствующие этим функциям. Дефолтовые шаблоны однозначно не впишутся ни в один дизайн
Кроме того, если разработчик любит делать несколько шаблонов на одну страницу, как я например (header, footer и т.д.), то придётся править и контроллер, что есть не очень хорошо.
Использование библиотеки. 2
Как регистрироваться, входить и выходить стало понятнее. А вот как на обычных страницах контролировать доступ к функционалу?
Для этого есть библиотека libraries/tank_auth.php, в ней предусмотрены функции is_logged_in, get_user_id и get_username. С их помощью можно построить нужную проверка. Например так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php class MyPage extends Controller { function MyPage (){ parent::Controller(); $this->load->helper('url'); // Загрузить библиотеку $this->load->library('tank_auth'); // Если пользователь не вошёл в систему то if(!$this->tank_auth->is_logged_in){ redirect('error/need_login'); } // Если пользователь вошёл в систему, // но это не тот пользователь, которого мы ждём if($this->tank_auth->get_user_id<>123){ redirect('error/wrong_user'); } ...................................... } |
Это довольно грубый пример для простейшего случая. Если у вас сложная модель доступа с множеством пользователей с разными типовыми ролями – пожалуй стоит написать целый класс со своим алгоритмом.
Но это уже другая история =)
Посты по теме:
RSS-подписка
Пока только намотал на ус, где это можно найти. Когда созрею до такого, тогда вернусь к теме))
freakAuth помоему лучше будет… хотя сам сейчас использую redux_auth.. функционал во второе его версии гораздо лучше и как то проще с ним работать… единственный минус который нашел – все так же используются не родные php сессии
Надо будет попробовать. А оно с Native Session работает?
нет. это и есть его минус. а так очень даже удобная штука
А по-моему DX AUTH круче гораздо. Ты ее не пробовал?
Нет не пробовал. А как она с нативными сессиями? А то прям беда!
У меня кстати работает с Native Session, пока проблем нет