laravel - 在中间件中调用模型函数并在 laravel 中检查身份验证
问题描述
我有两个模型,Admin.php 和 Role.php。有三个表 admins、roles 和一个数据透视表 admins_roles。我的申请中有两个角色,notary 和 title_officer。我已经创建了中间件来根据他们的角色检查管理员并将他们重定向到预期的 url。但是当经过身份验证的管理员登录时,我只能看到空白页面,而不是重定向的仪表板。我的应用程序没有显示错误。它只是向我显示空白页。我该如何解决?
公证中间件 ->
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class Notary
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth::check() && Auth::user()->role()){
return $next($request);
}else{
return redirect()->back();
}
}
}
官员中间件 ->
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class Officer
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth::check() && Auth::user()->role()){
return $next($request);
}else{
return redirect()->back();
}
}
}
管理模型 ->
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
use Notifiable;
protected $guard = 'admin';
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function role()
{
return $this->belongsToMany('App\Role','admins_roles');
}
}
榜样 ->
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
public function admins()
{
return $this->belongsToMany('App\Admin','admins_roles');
}
}
我正在使用官员中间件的路线->
Route::resource('order', 'BackendController')->middleware('officer');
解决方案
推荐阅读
- python - itertuples() Python 访问下一行数据?
- fortran - 如何避免为子模块中实现的延迟类型绑定过程重写相同的接口?
- elasticsearch - 如何使用elasticsearch在匹配的所有字段中搜索查询
- c++ - 如何在c ++中创建其字段引用对象的数组
- python - 我们可以在没有任何继承的情况下在新创建的类中使用超级方法吗?
- java - 媒体播放器破坏应用程序的流程
- excel - 如何在 pentaho 报表设计器的 excel 报表中添加过滤器,如给定的图像
- r - 有没有办法在“R Studio Cloud”中恢复未保存的 R 脚本
- laravel-8 - 将注册重定向到另一个页面 laravel8
- javascript - 为什么 plesk 上的节点总是使用端口 80?