사용자가 로그인한 후 만료 시간이 발생하고, 시간 초과 후 다시 로그인해야 하는 경우가 있습니다. 이 글에서는 주로 Laravel 5.4에서 사전 로그인 페이지로 이동하는 원리와 방법을 소개합니다. 그것이 모두에게 도움이 되기를 바랍니다.
1. 적용 시나리오:
사용자가 로그인한 후 만료 시간이 있으며, 시간 초과 후 사용자는 다시 로그인해야 합니다. 예: 사용자가 /user/2 페이지에 있고 로그인이 만료된 후 사용자가 로그인 페이지로 리디렉션되는 경우 사용자는 home/index 대신 /user/2 페이지에 계속 있어야 합니다.
2. 구현 원칙
사용자가 만료되었다고 판단한 후 사용자의 현재 URL 주소를 세션에 저장하고 다음 로그인 후 이 URL 주소로 이동합니다.
3. laravel의 특정 구현
라우팅 미들웨어(로그인 상태 확인) 여기서는 쿠키의 만료 여부를 기준으로 사용자 로그인 상태를 판단하며, 미들웨어는 로그인과 관련된 판단 및 실행만 판단합니다. 작업 (로그인할 때 쿠키를 사용합니다.) $token 값이 세션 키로 저장됩니다. 코드는 다음과 같습니다.
public function handle($request, Closure $next) { //判断cookie是否存在 if ($token = Cookie::get('token')) { //判断session信息,保持状态一致 if ($request->session()->get($token)) { return $next($request); } } //获取当前url,跳转到登陆页 $returnUrl = urlencode($request->getRequestUri()); return redirect('/login?reurl=' . $returnUrl); }
로그인 측(페이지와의 상호작용 및 점프 로직 처리) 여기서 수행되는 작업은 다음과 같습니다. 로그인 페이지로 이동합니다. 이는 미들웨어에서 구현될 수 있습니다. 다음 문장만 있습니다. 로 구현하는 것은 reurl을 플래시하여 프런트엔드에서 사용할 수 있도록 제공하는 것입니다.
return redirect('/')->with('reurl', $returnUrl);
페이지 측 (플래시 메모리 정보 판단) 플래시 메모리 정보를 확인하려면 ajax가 있고 제출 로그인이 있어야 합니다. ajax에서 reurl을 가져온 다음 백엔드에 로그인하여 reurl을 확인합니다. .
@if (session('reurl')) <input type="hidden" name="reurl" value="{{ session('reurl') }}"/> @endif
Login(로그인 로직)에서는 사용자 계정 비밀번호를 확인하고 쿠키와 세션을 저장하는 로직이 생략됩니다. 마지막으로 프런트 엔드는 location.href = 'url'이라는 URL을 획득하고 원래 URL 주소로 이동합니다.
$reurl = $request->get('reurl'); $url = empty($reurl) ? '/home/index' : $reurl; return response($url);
참고: 이 글에서는 재로그인 구현을 위한 관련 코드만 게시합니다. 실제 비즈니스에 맞게 실제 코드를 수정하시기 바랍니다.
관련 추천:
Thinkphp는 로그인 후 사전 로그인 페이지로 이동하는 데 여전히 문제가 있습니다
위 내용은 Laravel5.4 재로그인을 통해 사전 로그인 페이지 코드 공유로 점프 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!