Я занимаюсь авторизацией собственного пользователя и предоставляю роли пользователей на основе записи базы данных для моего users
.Laravel 4.2 Безопасность роли пользователя
Я сделал две роли; a user
роль, которая является всего лишь общим, зарегистрированным пользователем и ролью author
, что, очевидно, для автора.
В моей миграции таблицы пользователей я использую $table->string('role')->default('user');
в качестве роли пользователя по умолчанию. Затем я могу решить из формы, если пользователь должен быть автором.
В моей User.php
я создал public function
, вызывающую запись базы данных роли в моей таблице пользователей, как так:
public function isAuthor()
{
if (Auth::guest()) return false;
return Auth::user()->role = $this->role == 'author';
}
Что я теперь могу назвать в своих шаблонах, например, так:
@if($user->isAuthor())
<p>Only the author can this!</p>
@endif
Это дает мне контроль, которого я ожидаю, но я не полностью продаюсь по факту «все так просто». Я понимаю, что да, я могу создать отношения с пользователем и привязать отношения между двумя моделями, но я нашел это довольно аккуратным. Мое единственное беспокойство в этом - безопасность.
Это может быть не лучшая практика, но я довольно новичок в Laravel и задаюсь вопросом, какие последствия для безопасности делают это так, как я сделал, и другие доступные методы.
Я полностью понимаю, что существуют другие методы в SO/Laravel. Документы и роли пользователей были темой многих дискуссий, хотя я никогда не видел ее так, как я ее реализовал (что меня беспокоит). Я только заметил, что я могу проверить, что текущий пользователь подписал этот метод с использованием вышеописанного метода и подумал, что запрос к базе данных для согласованной строки будет работать одинаково - и это так.
Мой вопрос: безопасен ли он для использования в реальном мире?
Пригвожден. Фантастический ответ! Я все для повторного использования/масштабируемости, поэтому я бы скорее научился более эффективному подходу, так как я тогда не ограничен, как вы говорите, пользователям/ролям, которые имеют много отношений. Я сделаю шаг назад и изучу моделирование отношений, поскольку Laravel, похоже, справляется с этим как красота. Так яснее, я видел его в черно-белом цвете. Ура! –
Вы очень приветствуетесь, сэр, есть много статей в Интернете, если вы застряли. Отъезд Laracasts (премиум) и скотч io – Everon