Tank Auth. Беглый обзор.




Tank Auth требует некоторой доводки напильником
Зачем мне это?

Просто в последнее время я нахожусь в поиске библиотеки авторизации для CodeIgniter. А Tank Auth как раз то? что это делает.

И казалось бы библиотека уже не новая, и информация по ней имеется, но всё равно осталось ощущение, что нужно сделать себе памятку как с этим Танком обращаться. Заодно на русский немного переведу.

Инсталляция довольно простая и укладывается в несколько пунктов:

  • Скачать/распаковать
  • Папку 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');
                }
               ......................................
	}

Это довольно грубый пример для простейшего случая. Если у вас сложная модель доступа с множеством пользователей с разными типовыми ролями – пожалуй стоит написать целый класс со своим алгоритмом.

Но это уже другая история =)

Посты по теме:

  1. Проблемы сессии в CodeIgniter
  2. ALCAPTCHA – всё оказалось гораздо серьёзнее!

Категории CodeIgniter |
автор: altesack / Среда, Июнь 17, 2009 / 7 комментов »

7 комментов

    Пока только намотал на ус, где это можно найти. Когда созрею до такого, тогда вернусь к теме))

    freakAuth помоему лучше будет… хотя сам сейчас использую redux_auth.. функционал во второе его версии гораздо лучше и как то проще с ним работать… единственный минус который нашел – все так же используются не родные php сессии

    Надо будет попробовать. А оно с Native Session работает?

    нет. это и есть его минус. а так очень даже удобная штука

    А по-моему DX AUTH круче гораздо. Ты ее не пробовал?

    Нет не пробовал. А как она с нативными сессиями? А то прям беда!

    У меня кстати работает с Native Session, пока проблем нет