私はlaravelでプロジェクトをやっています。私は自分の役割に従ってユーザーをリダイレクトしたい。ミドルウェアを使用してユーザーの役割に応じてリダイレクトする方法は?
私のテーブルは、
ユーザー表持つフィールド(ID、名前、パスワード)です。
ロールフィールド(ID、ロール)を持つテーブル。
assigned_roleフィールド(id、role_id、user_id)を持つテーブル。
私は 'RoleMiddleware'
RoleMiddlewareとして指名1つのミドルウェア作成していることについては
User.php
public function roles()
{
return $this->belongsToMany('App\Role', 'assigned_roles', 'user_id', 'role_id');
}
、と私はUserモデルを持っている:
public function handle($request, Closure $next)
{
$roles = $request->user()->roles;
foreach ($roles as $role) {
if($role->name != 'super-admin')
return redirect('/user');
}
return $next($request);
}
を
私はKernel.phpが
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'role' => \App\Http\Middleware\RoleMiddleware::class,
];
、のように見えますが、今、私は、このミドルウェアを使用する方法がわからない、kernel.phpファイルに
をこのミドルウェアを持っています。私はそれが正しいURLにリダイレクトプロセスに署名しなかったとき、私は
Route::group(['middleware' => 'web'], function() {
Route::auth();
Route::group(['middleware' => 'role'], function() {
Route::get('/home', '[email protected]');
Route::get('/user', '[email protected]');
});
});
、としてRoute.phpファイルで、このミドルウェアを追加しかしとき。しかし、ユーザーがログインしているかどうかを確認せずに、内部ページにアクセスできるようになりました。 RoleMiddlewareの部分にコメントを書くと、内部のページにアクセスすることができなくなり、ユーザーがロギングしない限り、
私はこれを行う方法がわかりません。
「スーパー管理者」の役割を持つユーザーだけをリダイレクトすることはできません。それ以外の場合は、ユーザーはリダイレクトされます。 – blablabla
私はあなたが言うことを得ようとしていません – Amarja