【问题标题】:Validation using Sentry2 in Laravel 4在 Laravel 4 中使用 Sentry2 进行验证
【发布时间】:2013-08-30 18:28:21
【问题描述】:

我想在我的 Laravel 4 应用程序中使用 Sentry2,但我不确定如何在与它交互之前使用它来验证用户提交的数据。在我自己的模型中,我会编写一个 $rules 数组来包含验证规则,并编写一个可以在控制器中调用的静态 validates() 方法。

但是对于 Sentry2,我该怎么做呢?我是否必须扩展 Sentry2 提供的 User 模型并改为使用它?或者 Sentry 是否允许我添加验证规则并对其进行扩展?

如果我确实扩展了 Sentry2 User 模型,我是否像这样扩展它:

/app/models/User.php

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

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

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

然后我需要创建自己的配置文件,而不是使用 Sentry 提供的配置文件。我在工匠中执行以下操作:

php artisan config:publish cartalyst\sentry

并像这样更新配置文件:

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

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

这是正确的吗?如果是这样,我是否只是像往常一样调用模型来验证用户提交的数据?因此,例如,在 UsersController 中,我会通过以下方式检查输入:

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

【问题讨论】:

  • 我打算将哨兵 2 用于我的新网站身份验证系统。它很酷但是我注意到验证系统似乎有点奇怪。您必须使用 try catch 块来捕获抛出的不同异常。它都在文档中,看看创建一个新用户。它向您展示了您的需求。
  • 查看此内容以供参考。 github.com/rydurham/L4withSentry?files=1
  • 这取决于您要验证的内容。机会是您根本不需要哨兵,或者即使您需要它,也可以在不扩展它的情况下实现。

标签: php laravel laravel-4 eloquent cartalyst-sentry


【解决方案1】:

我相信你是在正确的方式。当你保存数据时,Sentry 并没有真正做任何验证(除了检查密码和登录字段),如果你想直接在 Eloquent 模型中使用验证,你可以扩展当前的 Cartalyst 用户模型,与您在代码中所做的完全一样。

在配置文件中,您可能需要考虑命名空间。要检查 Sentry 是否真的在使用您的模型,请尝试获取当前登录的用户 (Sentry::getUser()) 并对其进行 var_dump (dd(Sentry::getUser()) 以查看 Sentry 确实在使用您的类)。

完成该设置后,您可以像往常一样使用 Eloquent 模型和验证,并添加所有 Sentry 方法和属性。

如果您想将验证逻辑与您的模型分开,您可以查看将验证用作服务:http://culttt.com/2013/07/29/creating-laravel-4-validation-services/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2014-09-26
    • 2014-01-01
    • 1970-01-01
    • 2013-09-14
    • 2014-03-01
    • 2013-07-29
    相关资源
    最近更新 更多