#laravel #authentication #redirect
#laravel #аутентификация #перенаправление
Вопрос:
У меня есть платежная карта. внизу есть ссылка, которая выводит гостевых пользователей на страницу входа. Я хочу, чтобы пользователи снова перенаправлялись на маршрут оплаты картой после входа в систему. не могли бы вы, пожалуйста, помочь мне, как я могу это сделать? кстати, я новичок в laravel. спасибо за ваше время, ребята: X вот loginController.php :
<?php
namespace AppHttpControllersAuth;
use AppEventsLoginLogged;
use AppRulesRecaptcha;
use IlluminateHttpRequest;
use AppHttpControllersController;
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateSupportFacadesAuth;
class LoginController extends Controller
{
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/admin/dashboard';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->middleware('throttle:3,1')->only('login');
}
/**
* Attempt to log the user into the application.
*
* @param IlluminateHttpRequest $request
* @return bool
*/
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string',
'password' => 'required|string',
//'g-recaptcha-response' => ['required', new Recaptcha]
]);
}
/**
* Get the needed authorization credentials from the request.
*
* @param IlluminateHttpRequest $request
* @return array
*/
protected function credentials(Request $request)
{
return array_merge(($request->only($this->username(), 'password')), ['usr_is_admin' => 1]);
}
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
// Authentication passed...
return redirect()->intended('dashboard');
}
}
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return 'usr_name';
}
protected function authenticated(Request $request, $user)
{
event(new LoginLogged($request, $user));
}
}
вот redirectIfAuthenticated.php промежуточное программное обеспечение:
<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateSupportFacadesAuth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect()->route('dashboard');
}
return $next($request);
}
}
Ответ №1:
intended
Метод в redirector перенаправит пользователя на URL, к которому он пытался получить доступ, прежде чем был перехвачен промежуточным программным обеспечением аутентификации. Для этого метода может быть предоставлен резервный URI на случай, если предполагаемое место назначения недоступно. Например :
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
// Authentication passed...
return redirect()->intended('dashboard');
}
}
Комментарии:
1. спасибо за ваш ответ, но у меня это не работает, я уже пробовал это. Я не знаю, почему
2. Я использовал LoginController и перенаправлял аутентифицированное промежуточное программное обеспечение
3. Как я вижу в промежуточном программном обеспечении, всякий раз, когда пользователь входит в систему, он выводит пользователя на панель мониторинга по каждому запросу. Итак, пожалуйста, попробуйте без использования промежуточного программного обеспечения.