如何修复会话不工作的逻辑错误?
How can i fix logical error that is session is not working?
我希望我的应用程序只有在用户登录时才会转到 admin_panel.blade.php。我不想直接去那里。所以我实现了中间件和会话,但它不起作用,因为如果我直接转到 'admin_panel' 那么它不会限制我。在不使用或使用登录信息的情况下,它允许我转到 admin_panel。
Web.php
Route::get('/admin_log', function () {
return view('Admin.admin_login');
});
Route::group(['middleware'=>'session_auth'],function(){
Route::get('/admin_panel','LoginController@admin_panel');
登录控制器
public function admin_panel(){
return view('Admin.admin_panel');
}
public function admin_login(Request $req){
$login=AdminLogin::first();
if ($login->Admin_Name==$req->admin_name && $login->Admin_Password==$req->admin_password ){
$req->session()->put('session_name',$req->admin_name);
return redirect('admin_panel');
}
else{
return redirect('admin_log')->with('error','Invalid UserName or Password!');
}
}
中间件
public function handle($request, Closure $next)
{
if(is_null($request->session()->get('session_name'))){
return redirect('/admin_log');
}
return $next($request);
}
Kernal.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'session_auth' => \App\Http\Middleware\session_auth::class,
];
当你去 /admin_panel 查看它包含什么时,你是否在中间件的 handle() 函数中尝试了 dd($request->session()) ?
如果您没有被重定向到 /admin_log,这可能意味着您没有输入您的条件并且您的 session_name 存在。
希望对您有所帮助。
亲切的问候
我希望我的应用程序只有在用户登录时才会转到 admin_panel.blade.php。我不想直接去那里。所以我实现了中间件和会话,但它不起作用,因为如果我直接转到 'admin_panel' 那么它不会限制我。在不使用或使用登录信息的情况下,它允许我转到 admin_panel。
Web.php
Route::get('/admin_log', function () {
return view('Admin.admin_login');
});
Route::group(['middleware'=>'session_auth'],function(){
Route::get('/admin_panel','LoginController@admin_panel');
登录控制器
public function admin_panel(){
return view('Admin.admin_panel');
}
public function admin_login(Request $req){
$login=AdminLogin::first();
if ($login->Admin_Name==$req->admin_name && $login->Admin_Password==$req->admin_password ){
$req->session()->put('session_name',$req->admin_name);
return redirect('admin_panel');
}
else{
return redirect('admin_log')->with('error','Invalid UserName or Password!');
}
}
中间件
public function handle($request, Closure $next)
{
if(is_null($request->session()->get('session_name'))){
return redirect('/admin_log');
}
return $next($request);
}
Kernal.php
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'session_auth' => \App\Http\Middleware\session_auth::class,
];
当你去 /admin_panel 查看它包含什么时,你是否在中间件的 handle() 函数中尝试了 dd($request->session()) ?
如果您没有被重定向到 /admin_log,这可能意味着您没有输入您的条件并且您的 session_name 存在。
希望对您有所帮助。
亲切的问候