Ларавель 6.x Set auth () - >user () путем получения текущего пользователя из вызова Axios

Ларавель 6.x Set auth () - >user () путем получения текущего пользователя из вызова Axios

19.11.2019 12:20:12 Просмотров 42 Источник

Я работаю с командой, в которой мы создали приложение, которое уже имеет аутентификацию входа пользователя. Он хранит идентификатор текущего пользователя, чтобы его можно было вызвать с помощью вызова:

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 и больше не работает.

Пожалуйста, помогите мне, я абсолютно потерян, и никто, кажется, не нашел ответа.

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/58923074/laravel-6-x-set-auth-user-by-getting-current-user-from-axios-call#comment104109152_58923074
Я не пытаюсь сделать вызов axios в этом, мне нужно передать данные (user_ID), которые я получаю от этого вызова, чтобы я мог установить auth для входа в систему пользователя с этим идентификатором. Кроме того, поверьте мне, я знаю о конвенциях. Я изначально сделал это с правильными соглашениями, но члены команды другого приложения написали свою базу данных со странными соглашениями об именах, и я, к сожалению, должен подключиться к ней.
https://stackoverflow.com/questions/58923074/laravel-6-x-set-auth-user-by-getting-current-user-from-axios-call#comment104109960_58923074
Похоже, вы хотите создать пользовательский охранник аутентификации. laravel.com/docs/5.8/authentication#adding-custom-guards

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

Josiah Bell

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, чтобы они соответствовали атрибутам моих пользователей.

Но это сработало для меня, и я надеюсь, что это поможет другим! Спасибо тем, кто прокомментировал мой вопрос, это действительно вдохновило меня копать глубже и выяснить это!

https://stackoverflow.com/questions/58923074/laravel-6-x-set-auth-user-by-getting-current-user-from-axios-call/58960013#comment104175334_58960013
Вам пришлось изменить protected $table = "User";? Я немного удивлен, что это будет работать без него! Но рад, что вы получили это работает независимо :)
Закрыть X