Установить Laravel's Auth user
Я использую Laravel's Auth
класс для аутентификации пользователей на моем сайте, базовый Auth::attempt(...)
вещи.
Недавно появилось новое требование (да, заинтересованные стороны!), И теперь пользователям необходимо создавать новых пользователей (вторичных пользователей). Поскольку вход в систему основных пользователей осуществляется через стороннюю систему, я не могу сохранить вторичных пользователей вместе с основными пользователями (и повторно использовать текущую систему аутентификации).
Я подумал о том, чтобы как-то рассказать Auth
класс для входа и принудительно установить пользователя на Auth::user()
метод.
Есть ли способ сделать это?
1 ответ
РЕДАКТИРОВАТЬ
Для этого вы должны использовать в модели вашего вторичного пользователя UserInterface
учебный класс
use Illuminate\Auth\UserInterface;
Затем вам нужно реализовать 5 обязательных методов: getAuthIdentifier
, getAuthPassword
, getRememberToken
, setRememberToken
а также getRememberTokenName
,
С виду config > auth
не может быть изменено во время выполнения, вам придется проверить учетные данные пользователя вручную, получить экземпляр и сделать Auth::login($secondaryUser)
,
<?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
$user = User::find(1);
Auth::login($user);
И если у вас есть 2 user
модели, я думаю, это должно работать до тех пор, пока они расширяют основной класс пользователя