Skip to content

Instantly share code, notes, and snippets.

@gekh
Last active June 5, 2017 11:06
Show Gist options
  • Save gekh/6df02e74ebf339d4bc080dcb71ec1dc5 to your computer and use it in GitHub Desktop.
Save gekh/6df02e74ebf339d4bc080dcb71ec1dc5 to your computer and use it in GitHub Desktop.
Механизм авторизации на новых проектах
Механизм авторизации на новых проектах
Для всех случаев, когда требуется закрыть доступ, нам необходимы авторизация и аутентификация.
Базовые требования: Система должна проверять пароль при первой попытке доступа через форму входа, и запоминать войденность пользователя при последующем использовании интерфейса.
Реализовано это может быть тремя способами:
1. Базовая авторизация через htaccess
2. Базовая авторизация через php
3. Cложная система ролей через php с использованием БД
Для сложных админок с большим количеством интерфейсов следует использовать 3 способ.
Для простых интерфейсов с одним-двумя действиями проще и быстрее использовать первые два варианта. Например в случае, когда надо менеджеру обновить csv-файл с данными для отдельного сервиса.
Вариант 1, Базовая авторизация через htaccess, делается в файле .htaccess, имеет ряд сложностей в реализации и доступна только на Apache.
Подробнее рассмотрим вариант 2, Базовая авторизация через php, на базе Yii.
Код пишется в начале action, перед остальным кодом:
<?php
/*...*/
$auth = HelperUser::baseAuth('mailer_index', $_POST['pass'], 'SECRET_PASSWORD');
if (!$auth) {
$this->render('login');
Yii::app()->end();
}
/*...*/
?>
Полный код хелпера, вызываемого в примере выше:
<?php
class HelperUser
{
static public function baseAuth($stateName, $value, $pass)
{
if ($value == $pass) {
Yii::app()->user->setState($stateName, true);
}
return Yii::app()->user->getState($stateName);
}
}
?>
и сама форма:
<form>
<input name="pass" type="password" autofocus>
<button>ok</button>
</form>
Почитать:
https://ru.wikipedia.org/wiki/Авторизация
https://ru.wikipedia.org/wiki/Аутентификация
http://www.yiiframework.com/doc/guide/1.1/ru/topics.auth
https://habrahabr.ru/post/177873/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment