で働いていない私は、ユーザー・セッションはLaravelは5.4:カスタムミドルウェアは、ルート
<?php
namespace App\Http\Middleware;
use Closure;
class Checkusersession
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!$request->session()->has('admin_name')) {
// user value cannot be found in session
return redirect('adminlogin');
}
return $next($request);
}
}
を確認するには、次のミドルウェアを作成し、これは私のルートである:これは私のkernel.phpある
Route::get('webadmin',['middleware' => 'usersession','[email protected]']);
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'usersession' => \App\Http\Middleware\Checkusersession::class,
];
これはセッションを作成するコントローラメソッドです:
public function auth_admin(Request $request)
{
$admin_emai = $request->input('admin_email');
$admin_password = $request->input('admin_password');
$checklogin = DB::table('admin_login')
->select('admin_id','admin_email','admin_name')
->where([
'admin_email' => $admin_email,
'admin_password' => $admin_password
])->first();
if (count($checklogin) > 0) {
$request->session()->put('admin_id',$checklogin->admin_id);
$request->session()->put('admin_name',$checklogin->admin_name);
$request->session()->put('admin_email',$checklogin->admin_email);
return redirect()->action('[email protected]');
} else {
return redirect()->action('[email protected]_login_page')->with('status','Incorrect Email ID or Password');
}
}
ミドルウェアがセッション(admin_name)が存在するかどうかを確認します。そうでない場合は、ユーザーをログインページにリダイレクトします。それは動作していません。 urlからwebadmin(ダッシュボード)に直接アクセスすると、セッションが設定されていなくてもアクセスできます。助けてください。
コントローラのリダイレクトの前にdd($ request-> session())を作成して、セッションが正常に作成されたかどうかを確認してください。また、config/session.phpファイルで設定が正しいかどうか確認してください。 laravelのAuthクラスを使用することをお勧めします。 –
ここでも同じ問題があります:/ – juniorgarcia