设置Laravel的Auth用户

时间:2014-07-03 20:51:32

标签: laravel-4

我使用Laravel的Auth课程来验证我网站上的用户,基本的Auth::attempt(...)内容。

最近出现了新的要求(yay利益相关者!),现在用户需要创建新用户(次要用户)。由于主要用户的登录通过第三方系统,我无法将次要用户与主用户一起存储(并重新使用当前的认证系统)。

我想到的是以某种方式告诉Auth类登录并在Auth::user()方法上强制设置用户。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

修改

为此,您必须在辅助用户的模型中使用UserInterface

use Illuminate\Auth\UserInterface;

然后,您需要实施5种必需的方法:getAuthIdentifiergetAuthPasswordgetRememberTokensetRememberTokengetRememberTokenName

由于显然config > auth无法在运行时更改,因此您必须手动检查用户的凭据,获取实例并执行Auth::login($secondaryUser)。< / p>

<?php

use Illuminate\Auth\UserInterface;

class SecondaryUser extends Eloquent implements UserInterface {

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'secondary_users';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password');

    /**
     * Get the unique identifier for the secondary user.
     *
     * @return mixed
     */
    public function getAuthIdentifier()
    {
        return $this->getKey();
    }

    /**
     * Get the password for the secondary user.
     *
     * @return string
     */
    public function getAuthPassword()
    {
        return $this->password;
    }

    /**
     * Get the token value for the "remember me" session.
     *
     * @return string
     */
    public function getRememberToken()
    {
        return $this->remember_token;
    }

    /**
     * Set the token value for the "remember me" session.
     *
     * @param  string  $value
     * @return void
     */
    public function setRememberToken($value)
    {
        $this->remember_token = $value;
    }

    /**
     * Get the column name for the "remember me" token.
     *
     * @return string
     */
    public function getRememberTokenName()
    {
        return 'remember_token';
    }

    public function mainUser()
    {
        return $this->belongsTo('User');
    }

}

原始回答

我不确定是否理解了您想要的内容,但也许这可以提供帮助:http://laravel.com/docs/security#manually

$user = User::find(1);
Auth::login($user);

如果你有2个user模型,我认为它应该可以工作,只要它们扩展主用户类