2013-08-27 42 views
0

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

但Sentry2,我该怎么做?我是否需要扩展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) {...}; 
} 

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

php artisan config:publish cartalyst\sentry 

和更新配置文件,如下所示:

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

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

这是正确的吗?如果是这样,我是否会像通常那样调用模型来验证用户提交的数据?因此,例如,在用户控制器中,我将通过执行检查输入:

$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(dd(Sentry :: getUser())以查看Sentry是否真的在使用你的类)。

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

如果你想保持验证逻辑从你的模型分开,你可以看看使用的验证作为服务:http://culttt.com/2013/07/29/creating-laravel-4-validation-services/