各位大神好 小弟又來問問題了
小弟自己建立了一個 Middleware
MemberMiddleware.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class MemberMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!Auth::guard('member')->check()) {
return redirect(Route('index'));
}
return $next($request);
}
}
然後自己建立了登入跟註冊的方法
登入
public function login(Request $request){
$member = Accounts::where("login",$request->account)->first();
if($member ==null)
return view('login',['error'=>1]);
if($member->password != $request->password)
return view('login',['error'=>1]);
$auth = $member->auth;
if($auth==null){
$auth = new AccountAuth;
$auth->account =$member->login;
$auth->save();
}
if($auth->isactive ==0)
return view('login',['error'=>2]);
Auth::guard('member')->login($member);
return redirect(Route('memberIndex'));
}
註冊後登入
public function signup(Request $request){
$request->validate([
'account' => 'required|min:4|max:16',
'password' => 'required|min:4|max:16' ,
]);
$member = new Accounts();
$member->login = $request->account;
$member->password = $request->password;
$member->save();
$auth = new AccountAuth();
$auth->account =$member->login;
$auth->save();
Auth::guard('member')->login($member);
//dd(Auth::guard('member')->check());
return view('member.signupSuccess');
}
route 用上面建立的middleware來檢查是否登入
Route::prefix("member")->middleware("member")->group(function(){
Route::get('/',"MemberLoginController@home")->name("memberIndex");
});
用登入的方法登入之後 進到member group 底下的頁面沒有問題
但是用註冊完成的登入 進到member group 底下的頁面就會被middleware踢回首頁
註冊完成之後檢查登入的狀態是得到true 但是換頁之後就會變成false
不知道有沒有大大遇到過這個問題?該怎麼解決呢?
我不知道你登入做了甚麼動作,
一般來說登入的方式是透過Cookie或Session,
有人說Session是比較安全.
小魚大大 登入是用laravel的原生方法登入
Auth::guard('member')->login($member);
有試著去看她原本的code 是用Session沒錯 我的問題是 再註冊跟登入都是用上面那一行code做登入 怎會有不一樣的結果QQ
我猜,
你的 $member 可能少了什麼?
可以考慮重新從資料庫抓資料,
像登入時那樣?
其實如果重複的動作有時候可以寫個function,
不過看起來Code不多也可以先不用.