2013-08-27 3 views
0

Я хочу использовать Sentry2 в моем приложении Laravel 4, но я не уверен, как использовать его для проверки представленных пользователем данных, прежде чем я буду взаимодействовать с ним. В моих собственных моделях я бы написал массив $rules, чтобы содержать правила проверки и написать статический метод validates(), который я мог бы вызвать в контроллере.Проверка с использованием Sentry2 в Laravel 4

Но с Sentry2, как это сделать? Должен ли я расширять модель User, которую Sentry2 предоставляет и использует для этого? Или есть способ, которым Sentry позволяет мне добавлять правила проверки с его расширением?

Если я продлить Sentry2 модель пользователя, я продлить его следующим образом:

/app/models/User.php

class User extends \Cartalyst\Sentry\Users\Eloquent\User { 

    private static $rules = array(...); 

    public static validates($input, static::$rules) {...}; 
} 

Я тогда нужно создать свой собственный config, вместо того, чтобы использовать тот, который предоставляет Sentry. Я следующий в ремесленника:

php artisan config:publish cartalyst\sentry 

и обновить конфигурационный файл, как так:

/app/config/packages/cartalyst/sentry/config.php

'users' => array() 
    'model' => 'User', 
; 

Это правильно? Если да, позвольте мне просто вызвать модель для проверки данных, представленных пользователем, как обычно? Так, например, в UserController я бы проверил ввод, выполнив:

$validator = User::validate(Input::all()); 
+0

я собирался использовать часовые 2 для моей новой системы проверки подлинности веб-сайта. Его довольно прохладно, однако я заметил, что система проверки показалась немного странной. Вы должны использовать блоки try catch, чтобы вылавливать разные исключения. Все это в документации, посмотрите на создание нового пользователя. Он показывает вам, что вам нужно. – mic

+0

Ознакомьтесь с этим для справки. https://github.com/rydurham/L4withSentry?files=1 – SamSquanch

+0

это зависит от того, что вы хотите проверить. Вероятность того, что вам вообще не нужен часовой, или если вы даже нуждаетесь в нем, это возможно, не расширяя его. – itachi

ответ

1

Я считаю, что вы на правильном пути. Sentry на самом деле не делает никакой проверки, когда вы сохраняете данные (кроме проверки пароля и поля входа), и если вы хотите использовать валидацию непосредственно в модели Eloquent, вы можете расширить текущую модель пользователя Cartalyst, точно так же, как вы сделали в своем коде.

В конфигурационном файле вам может потребоваться занятие ваших пространств имен. Чтобы проверить, что Sentry действительно использует вашу модель, попробуйте получить текущего пользователя (Sentry :: getUser()) и var_dump it (dd (Sentry :: getUser()), чтобы увидеть, что Sentry действительно использует ваш класс).

После того, как вы получили эту настройку, вы можете использовать свою модель Eloquent и проверку, как обычно, с добавлением всех методов и свойств Sentry.

Если вы хотите сохранить логику проверки отдельно от вас модели, вы можете взглянуть на проверку с использования в качестве услуги: http://culttt.com/2013/07/29/creating-laravel-4-validation-services/

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