我想基本验证,如果用户是管理员,然后请求下一步,否则重定向到主页
User.php:
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password','role_id','is_active','photo_id',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function role(){
return $this->belongsTo('App\Role');
}
public function photo(){
return $this->belongsTo('App\Photo');
}
public function isAdmin(){
if ($this->role()->name=="administrator"){
return true;
}
return false;
}
}
最后一个函数是isAdmin()
一个dmin.php(这是中间件):
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class Admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check()){
if (Auth::user()->isAdmin()){
return $next($request);
}
}
return redirect('/');
}
}
routes.php:
<?php
Route::get('/', function () {
return view('welcome');
});
Route::get('/admin',function(){
return view('admin.index');
});
Route::group(['middleware'=>'admin'],function(){
Route::resource('/admin/users','AdminUsersController');
});
Route::auth();
Route::get('/home', 'HomeController@index');
我得到以下错误:
Admin.php第21行中的FatalErrorException:
调用null上的成员函数isAdmin()
我还添加了'admin'=
由于您没有任何角色,请首先在角色
表中插入一些数据。
请尝试以下操作:将User.php模型上的方法更改为static。
static function isAdmin(){
if ($this->role()->name=="administrator"){
return true;
}
return false;
}
下一步:修改中间件,它应该可以工作。
<?php
namespace App\Http\Middleware;
use Closure;
class Admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (auth()->check()){
if (\Admin::isAdmin()){
return $next($request);
}
}
return abort(404); //redirect the user to not found page.
}
}
这是因为没有用户会话。中间件仅在用户登录时工作。所以你需要先登录然后检查中间件
函数attach()有问题。我已经创建了3个表。1表用于添加电影。表2适用于电影类别。3表是电影ID和类别ID的集合。多对多的组合。 当我想添加一个新的视频类别从表格这我有错误- 视频控制器。php- 视频php模型 类别php模型 User.php模型(也许你需要一个User.php模型解决问题) 迁移-创建\u类别\u视频\u表。php 迁移-创建类别表。php 移民-create_video
当我尝试使用facebook对用户进行身份验证时,我可以将数据存储到用户表中,但无法将数据创建到soical_帐户中。因此,在出现错误后,会出现“调用成员函数创建()on null”。谁能给我一个解决方案,说明我错在哪里。 在我的社会账户控制中,我有以下方法 在我的数据库迁移中,我有用户和social_accounts用户与social_accounts有一对多的关系。 用户表: Social_a
本文向大家介绍浅析成员函数和常成员函数的调用,包括了浅析成员函数和常成员函数的调用的使用技巧和注意事项,需要的朋友参考一下 在Coordinate类中,有一个Display()成员函数和一个Display() const常成员函数,代码如下 Display()成员函数和一个Display() const常成员函数是互为重载的,那么如果我们直接像下面这样调用该方法,会调用的是哪个呢? 那么运行下程序
我想创建一个函数来检查数据库中是否已存在用户。该函数存储在名为 checks 的 php 文件中并且必须返回一个值。 我的数据库.php文件: 我在另一个名为 的 php 文件中调用 错误出现在这个句子上:$sth=$con- 我在< code>checks.php文件中试过: < li >将代码从< code>database.php移动到checks.php < li >设置< code >错
我有一个密码: 我正在尝试使用toSql()将laravel查询转换为mysql 但我犯了一个错误,比如 对整数调用成员函数toSql() 然后我尝试了 但它返回的输出为'false',我无法得到预期的输出。我不知道为什么会发生这种情况。任何帮助都将不胜感激。 预期产出:
最近在review代码的时候发现,使用了空指针调用成员函数,并且成员函数内部有使用到成员变量,居然没有出错。很是奇怪,就用一篇博客把关于空指针调用成员函数相关的内容总结起来。 空指针调用成员函数 调用普通成员函数 如果空指针调用普通成员函数,看该函数体中是否使用到了this指针(是否访问非静态成员变量)。如果使用到了this指针,程序会崩溃;如果没有使用到this指针,程序不会崩溃。当然,如果访问