【问题标题】:Only roles that are Admins can have access to /admin. But its not working只有管​​理员角色才能访问 /admin。但它不工作
【发布时间】:2020-05-25 12:09:36
【问题描述】:

用户.php:

public function IsAdmin(){
    return $this->role=='admin';
}

Checkifadmin.php(中间件):

public function handle($request, Closure $next)
{
  if (auth()->user()->role=='admin') {
    return redirect(route('home'));
  }
  return $next($request);
}

内核.php:

在受保护的路线中

'checkifadmin' =>\App\Http\Middleware\Checkifadmin::class,

create_users_table.php

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->string('role')->default('customer');
            $table->rememberToken();
            $table->timestamps();
});

web.php:

Route::get('admin',function(){
return view('layouts.admin');
})->middleware(['checkifadmin']);
Route::get('/', function () {
    return view('index');
})->name('home');
Route::get('/shop/product', function () {
    return view('shop.product');
})->name('shop.product');
Route::get('/shop/shoppingcard', function () {
    return view('shop.shoppingcard');
})->name('shop.shoppingcard');
Route::get('/shop/checkout', function () {
    return view('shop.checkout');
})->name('shop.checkout');

Auth::routes();

我的用户中有 2 个角色。客户和管理员,只有管理员应该有权访问 /admin 但由于某种原因它似乎不起作用。我已经复制并粘贴了我为这个问题所做的所有可能的代码,提前谢谢你

【问题讨论】:

  • 如果其他条件似乎错误。如果admin 让请求继续,如果customer 重定向到主页。
  • 能不能把代码写的更清楚一点

标签: laravel middleware laravel-6


【解决方案1】:

如果只允许admin 进入,中间件应该是这样的

Checkifadmin.php(中间件):

public function handle($request, Closure $next)
{
    if (auth()->user()->role !='admin') {
        return redirect(route('home'));
    }

    return $next($request);

}

然后你可以保持你的路线原样

Route::get('admin',function() {
    return view('layouts.admin');
})->middleware(['checkifadmin']);

【讨论】:

  • 仍然给出同样的错误伙伴! 127.0.0.1 重定向您的次数过多。并且页面不断加载和加载
  • 显示您的完整路线文件或检查home 路线是否可供所有人无需登录即可访问
猜你喜欢
  • 2021-08-18
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多