我使用Laravel的Auth
课程来验证我网站上的用户,基本的Auth::attempt(...)
内容。
最近出现了新的要求(yay利益相关者!),现在用户需要创建新用户(次要用户)。由于主要用户的登录通过第三方系统,我无法将次要用户与主用户一起存储(并重新使用当前的认证系统)。
我想到的是以某种方式告诉Auth
类登录并在Auth::user()
方法上强制设置用户。
有办法做到这一点吗?
答案 0 :(得分:3)
修改强>
为此,您必须在辅助用户的模型中使用UserInterface
类
use Illuminate\Auth\UserInterface;
然后,您需要实施5种必需的方法:getAuthIdentifier
,getAuthPassword
,getRememberToken
,setRememberToken
和getRememberTokenName
。
由于显然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
模型,我认为它应该可以工作,只要它们扩展主用户类