2016-03-22 2 views
-1

Что является лучшим способом для управления правами доступа пользователей ти PHP ..Лучшего способ управления правами доступа пользователей с PHP

1) Используя новой таблицы?
table user_permissions (id, userId, addNews, editNews, deleteNews, ...)
тип каждого столбца свойств не булево (1 => да, 0 => нет)

2) С помощью логических вентилей?

$addNews = 1; 
$editNews = 2; 
$deleteNews = 4; 
... 
$permissions = $addNews | $editNews | $deleteNews | ...; 

//Save permission in user table 
//and save it in session on login to test permission in every page 

$permissions = $_SESSION['permissions']; 
if($permissions & 1) // true -> user has permission to add news 

Или у вас есть другой способ?

+0

Новый стол. Таким образом, пользователь не может манипулировать им (есть инструменты для редактирования файлов cookie, которые вы знаете), поэтому он более безопасен. И он также легко управляется (например, с помощью фоновой панели, вместо редактирования файла) –

+0

сеанс не сохраняется в файлах cookie. –

ответ

2

Нет лучшего способа. Каждое решение зависит от того, как вы хотите его использовать.

Например, по крайней мере, следующие вопросы нужно ответить:

  • Сколько разрешений у вас есть?
  • Являются ли они иерархическими (guest -> user-> admin -> super admin) или нет? (Один пользователь имеет доступ, например, для записи новостей, но не для их удаления.)
function havePermission($name){ 
// logic 
} 

NEVER! Выполняйте встроенные проверки внутри вашего кода. Это плохая привычка.

Кроме того, существует три способа, как хранить разрешения:

  1. Новая таблица (или ваши основные пользователи таблиц), как вы, если:

    userId, accessNews, accessPages, etc

  2. Новая таблица, однако , с разной структурой: userId, permissionId
  3. Главная пользовательская таблица, одно поле: userId, groupId ИЛИ userId, access

    В этом решении, в доступе вы пишете матрицу доступа, которую можно проверить с помощью булевой логики.

Смежные вопросы