【Laravel】 로그인하지 않은 상태에서의 작업을 보존하고 자동 로그인 → 작업을 수행하는 방법
개요
Laravel에서 로그인하지 않은 상태의 작업을 중지하고 자동으로 로그인 → 실행 코드를 쓰는 예입니다.참고가 됐으면 좋겠어요.
무슨 말인지 이해하기 어려워서 실례로 소개해 드릴게요.
하고 싶은 일의 구체적인 예
무용 과정 예약 사이트를 예로 들어 규격을 설명하다.
화면 아래쪽의'예약'버튼을 누르면'트위터 공동 로그인(허가 약속)→예약'이 빈틈없이 실행된다.
이미지의'예약'버튼을 누르면 트위터 인증을 통해 로그인하여 예약이 완료됩니다.간편하다🙌
이전에 사용한 예약 서비스는 예약하기 전에 "사용자 로그인 → 로그인"이 필요합니다.이것을 없애고 예약 전의 번거로움을 최대한 없앴다.
특히이번에는트위터를전문으로등록해협업하는사용자들을 통해어느 SNS와협업할지선택하는시간도크게 줄었습니다.😁
실현 방법
여기에도 무용 수업 예약 사이트를 예로 들어 설명한다.
예를 들면 트위터 제휴지만 다른 SNS 제휴 로그인도 가능하니 필요에 따라 활용하세요.
[전제]
laravel v5.8.19
php v7.3.8
대략적인 처리 절차
여기에도 무용 수업 예약 사이트를 예로 들어 설명한다.
예를 들면 트위터 제휴지만 다른 SNS 제휴 로그인도 가능하니 필요에 따라 활용하세요.
[전제]
laravel v5.8.19
php v7.3.8
대략적인 처리 절차
구현 지침
예약 작업~OAuth 인증 목표로 리디렉션
우선 이 부근에서 처리한 코드를 소개합니다
public function create(Request $request)
{
// 未ログインの場合は、予約操作をCookieに保存してTwitter認証へリダイレクト
if (Auth::check() === false) {
Cookie::queue(Cookie::make('noAuthReserveRequest', $request->lesson_id, 30));
return redirect('/login/twitter');
}
// 以下はログイン済みの場合の処理。省略
Twitter 인증 목적지로 다시 지정, OAuth 인증
return redirect('/login/twitter')
이후 처리는 라벨에서 트위터 인증을 하는 것이다.참조세계에서 가장 상세하게 Socialite의 사용 방법을 설명했다.세상에서 가장 예의 바르니 안심하세요😊
이 보도는 붐비는 맏이 이 쓴 것이다.모른 채TwitterDB 신고하면 기뻐요.본인이 말한 것 같아서요.제가 다른 일로 다섯 번 정도 고소를 했어요.
말을 잘못 했어요.
사용자 등록 처리~예약 처리
남은 처리를 설명해 드리겠습니다!
6. (첫 로그인 시) 사용자의 로그인 처리
7. 로그인, 쿠키 정보에 따라 예약 처리
LoginController.php
/**
** OAuth認証の結果受け取り
**
** @param str $provider
** @return \Illuminate\Http\Response
**/
public function handleProviderCallback($provider)
{
// 直接関係ないエラー処理等は説明のために省いています
$providerUser = \Socialite::with($provider)->user();
Auth::login(SocialService::findOrCreate($providerUser, $provider));
if (Auth::check()) {
//ログイン前にしてた予約操作を実行する
$noAuthReserveRequest = Cookie::get('noAuthReserveRequest');
\Cookie::queue(\Cookie::forget('noAuthReserveRequest'));
//予約IDがCookieに入力されている場合は予約する
if (!empty($noAuthReserveRequest)) {
//予約の重複を防ぐ
if (0 === Reserve::where('user_id', Auth::user()->id)->where('lesson_id', $noAuthReserveRequest)->count()) {
//ログイン前にした予約操作を実行
$reserve = new Reserve();
$reserve->fill(['user_id' => Auth::user()->id]);
$reserve->fill(['lesson_id' => $noAuthReserveRequest]);
$reserve->save();
return view('course.reserve')->with(['course' => $reserve->lesson->course, 'lesson' => $reserve->lesson]);
}
}
총결산
Fat 컨트롤러의 메스꺼운 전선입니다.
며칠 후에 재구성하고 싶어요.
겸사겸사 말씀드리지만, 실제로는 여기서 제 무용 수업을 예약할 수 있습니다.
춤 경험이 없는 사람들은 환영합니다!춤으로 운동 부족을 없애자!
매월 마지막 토요일, 시부야역 도보 5분, 15~16시, ¥1000.
https://eedance.funspot.tokyo/
여기서 마치겠습니다.
Reference
이 문제에 관하여(【Laravel】 로그인하지 않은 상태에서의 작업을 보존하고 자동 로그인 → 작업을 수행하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daisuke85a/items/551dc3c30f63f69dab00
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Laravel】 로그인하지 않은 상태에서의 작업을 보존하고 자동 로그인 → 작업을 수행하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daisuke85a/items/551dc3c30f63f69dab00텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)