作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基本网页,我希望用户能够单击登录链接,完成登录,然后返回到该页面(而不是主页)。该页面有一些功能只有在用户登录后才能看到。
我遇到了这个问题,无论我什么时候去登录,它都会在身份验证后返回主页,或者我设置为常量的任何内容,而不是先前的页面。
Fortify.php 有一个常量的主路径,所以我也不能用表达式更新它...
'home' => RouteServiceProvider::HOME,
这是中间件 RedirectIfAuthenticated.php,它是标准的 Laravel,我想知道需要更新什么。
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
我还应该注意,如果我向页面添加一个中间件路由,如下例所示,那么该过程会正常工作,直至将用户返回到之前的页面。
Route::middleware(['auth:sanctum', 'verified'])->get('/agenda', function () {
return view('agenda');
})->name('agenda');
但是,我需要用户能够查看 agenda
页面,即使他们是访客......但是,一旦登录,他们将返回到议程页面,该页面将有一些额外的功能。不幸的是,我似乎无法在文档中找到任何关于此的信息。
最佳答案
在 AuthenticatesUsers.php 中
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
if ($response = $this->authenticated($request, $this->guard()->user())) {
return $response;
}
return $request->wantsJson()
? new JsonResponse([], 204)
: redirect()->back();
}
或者您可以在第 31 行的默认登录 Controller 中执行此操作
protected $redirectTo = "/your-path";
关于php - Laravel 8 + 捷流 : How to Redirect to Prior Page After Login?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66170572/
我是一名优秀的程序员,十分优秀!