Ларавель 6.x Set auth () - >user () путем получения текущего пользователя из вызова Axios
Я работаю с командой, в которой мы создали приложение, которое уже имеет аутентификацию входа пользователя. Он хранит идентификатор текущего пользователя, чтобы его можно было вызвать с помощью вызова:
axios.get('/user/getmyid')
.then((response_ => {
user_ID = response.data;
}
Приложение (построено с Vue.Яш, Vuex, и Vuetify, не фреймворк Laravel) маршруты на мой фреймворк Laravel 6 приложения, который я настроил таким образом, что он требует использования авт()->идентификатор(). Я хочу иметь возможность получить идентификатор пользователя и заставить аутентификацию Laravel войти в систему как пользователь с этим идентификатором. Мы используем одну и ту же таблицу для пользователей для обоих приложений, но она не называется "пользователи". Вместо этого он называется "Пользователь", и у меня также возникают проблемы с аутентификацией Laravel 6, поскольку Laravel Auth специально ищет таблицу под названием "пользователи".
Как я могу заставить Auth 1) войти в систему-это пользователь с этим идентификатором в Laravel 6 и 2) проверить таблицу "пользователь" вместо поиска таблицы "пользователи" по умолчанию?
Я знаю, что раньше вы могли использовать что-то похожее на следующее, чтобы обойти его в LoginController():
public function postLogin() {
$user = User::where('USER_NAME', '=', Input::get('username'))->firstOrFail();
Auth::login($user);
return redirect('home');
}
Однако это было решение для Laravel 5.2 и больше не работает.
Пожалуйста, помогите мне, я абсолютно потерян, и никто, кажется, не нашел ответа.




Ответы - Ларавель 6.x Set auth () - >user () путем получения текущего пользователя из вызова Axios / Laravel 6.x Set auth()->user() By Getting Current User From Axios Call

20.11.2019 08:19:15
Я решил ее. Вот как это делается:
В моей app\User
я добавил:
protected $primaryKey = 'user_ID';
которую потом заменили по умолчанию двиг $primaryKey
, что был просто 'id'
.
Затем я добавил следующую функцию в app\Http\Controllers\Auth\LoginController
:
public function postLogin($uid) {
$user = User::where('user_ID', '=', $uid)->firstOrFail();
auth()->loginUsingId($user->user_ID);
return redirect('/home');
}
В routes\web
я добавил следующий маршрут ниже остальных моих маршрутов:
Route::get('/{uid}', 'Auth\LoginController@postLogin');
И это решило мою проблему! Мне также пришлось настроить атрибуты в protected $fillable = [ ... ]
и protected $hidden = [ ... ]
массивы в модели app\User
, чтобы они соответствовали атрибутам моих пользователей.
Но это сработало для меня, и я надеюсь, что это поможет другим! Спасибо тем, кто прокомментировал мой вопрос, это действительно вдохновило меня копать глубже и выяснить это!

protected $table = "User";
? Я немного удивлен, что это будет работать без него! Но рад, что вы получили это работает независимо :)