php - Laravel 8 + 捷流 : How to Redirect to Prior Page After Login?

标签 php laravel fortify laravel-middleware jetstream

我有一个基本网页,我希望用户能够单击登录链接,完成登录,然后返回到该页面(而不是主页)。该页面有一些功能只有在用户登录后才能看到。

我遇到了这个问题,无论我什么时候去登录,它都会在身份验证后返回主页,或者我设置为常量的任何内容,而不是先前的页面。

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/

相关文章:

logging - 强化日志锻造问题

php - Woocommerce 3.x 中的导入和导出产品品牌

php - 如何在 Laravel 5.4 中的 *belongsToMany* 表连接上创建作用域?

加强对多台机器的扫描

php - 如何在 Web 应用程序中处理和/或存储货币值?

php - 删除特定路由组的重定向

asp.net - .net fortify 扫描

php:twilio 如何在特定条件下将传入调用转移到特定客户端浏览器

php - 自定义分类 WP_Query

php - 通过支持 HTTP_RANGE 的 Apache 和 PHP virtual() 函数发送文件