в реализации Laravel HTTP Basic Authentication он использует электронную почту для имени пользователя, как мы можем изменить столбец на имя пользователя?

в laravel мы можем использовать Http Basic Authentication для облегчения работы пользователя login . без страницы входа, прикрепив middleware->('auth.basic') к концу Route в web.php, но по умолчанию он получает электронную почту в качестве имени пользователя, как я могу его изменить? благодарю вас .

Route::get('/somePage','Controller@controllerFunction')
->middleware('auth.basic');

изображение: https://drive.google.com/file/d/1gbzE0azW8TfZsvQN7k7ZoG2PIRlo14i6/view?usp=sharing


person Geco    schedule 22.04.2019    source источник
comment
см. это stackoverflow.com/questions/39374472/   -  person Prafulla Kumar Sahu    schedule 22.04.2019


Ответы (1)


Из документов:

Как только промежуточное программное обеспечение будет прикреплено к маршруту, вам автоматически будет предложено ввести учетные данные при доступе к маршруту в вашем браузере. По умолчанию промежуточное ПО auth.basic будет использовать столбец электронной почты в записи пользователя в качестве «имени пользователя».

Существует handle() метод внутри промежуточного программного обеспечения по умолчанию.

Вам нужно создать собственное промежуточное ПО и переопределить handle():

namespace app\Http\Middleware;

use Closure;
use Illuminate\Auth\Middleware\AuthenticateWithBasicAuth;

class YourBasicAuthMiddleware extends AuthenticateWithBasicAuth
{
    public function handle($request, Closure $next, $guard = null, $field = null)
    {
        $this->auth->guard($guard)->basic($field ?: 'YOUR_FIELD'); //place here the name of your field

        return $next($request);
    }
}

Затем обновите свой App\Http\Kernel:

'auth.basic' => \app\Http\Middleware\YourBasicAuthMiddleware::class,

person Tarasovych    schedule 22.04.2019
comment
Спасибо, какой контроллер вы имеете в виду LoginController? - person Geco; 22.04.2019
comment
@Geco, наверное .. Я не знаю, где вы обрабатываете аутентификацию. Вы не написали это в своем вопросе. - person Tarasovych; 22.04.2019
comment
нет, он не работает, он не использует функции LoginController, я не знаю, где его методы и как он работает, в документации laravel также ничего не сказано об этом. - person Geco; 22.04.2019
comment
обратите внимание, это http basic authentication, а не auth по умолчанию, который включен в laravel - person Geco; 22.04.2019
comment
я работаю с auth в controller по имени LoginController, я довольно эффективен в этом, но этот, я не знаю, как он работает! - person Geco; 22.04.2019
comment
и как мне его использовать после объявления этого класса? извините, я не совсем понимаю промежуточное программное обеспечение, но я создал его и переопределил метод дескриптора, как мне теперь его использовать? заранее спасибо - person Geco; 22.04.2019
comment
Зарегистрируйте свежее промежуточное ПО и назначьте его маршрутам, которые должны быть защищены базовыми авторизация - person Tarasovych; 22.04.2019
comment
В основном вы хотите изменить 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, на 'auth.basic' => \app\Http\Middleware\YourBasicAuthMiddleware::class, - person Tarasovych; 22.04.2019