【问题标题】:Having troubles with Multi-Auth in Laravel 4在 Laravel 4 中遇到多重身份验证问题
【发布时间】:2014-06-17 16:09:25
【问题描述】:

我正在尝试在这里实现多身份验证包:https://github.com/ollieread/multiauth#laravel-multi-auth

对于我有的两个模型,粉丝和艺术家。

我按照说明安装了包,然后在auth.php中使用:

'multi' => array(
    'user' => array(
        'driver' => 'eloquent',
        'model' => 'Fan'
    ),
    'artist' => array(
        'driver' => 'database',
        'table' => 'artists'
    )
),

我试图模仿这个例子。但是,当我运行我的原始代码时(仅基于粉丝,因此我将用户身份验证与我的粉丝模型相关联)

当我使用原始$friends = Auth::user()->friends(例如)调用之一进入我的页面时,我收到错误:

Undefined property: Ollieread\Multiauth\AuthManager::$friends

当朋友明确是粉丝表中的一列时。有什么想法吗?

【问题讨论】:

    标签: php authentication laravel laravel-4


    【解决方案1】:

    您以错误的方式调用经过身份验证的模型。

    $friends = Auth::user()->friends
    

    这是旧方法,user() 是返回模型的方法。现在,第一种方法是 auth 类型,我什至添加了 get() 方法以减少混淆。

    $friends = Auth::user()->get()->friends;
    

    在您的实例中,Auth::user() 是配置中 user 条目的 Auth 实例,Auth::artist() 是配置中 artist 条目的 Auth 实例。

    基本上走原来的auth库做事的方式,全部上移一级。

    Auth::user()->get()->id // Original: Auth::user()->id
    Auth::user()->check() // Original: Auth::check()
    

    【讨论】:

    • 好的,所以只需添加 get() 字段来获取实体,明白了。谢谢。
    • 是的,我添加了那个方法实际上是为了防止这种混淆,我什至写在文档中。
    • 再问一个问题。 Auth::login() 呢?现在是 Auth::user()->login() 吗?
    • 那就是Auth::usertype()->login,其中usertype 是您配置中的类型,即userartist。阅读软件包的文档,它清楚地说明了这一点。
    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 2014-05-10
    • 2017-03-26
    • 2018-01-27
    • 2013-09-09
    相关资源
    最近更新 更多