为了账号安全,请及时绑定邮箱和手机立即绑定

会话过期时调用成员函数出错(中间件)

会话过期时调用成员函数出错(中间件)

PHP
哔哔one 2023-04-28 14:57:41
当我的会话到期并重新加载页面时,我收到以下错误(在以下代码块中发出信号的行):hasRole()错误:调用成员函数nullclass AdminMiddleware{    public function handle($request, Closure $next) {        if ($request->user()->hasRole('admin')) // this line            return $next( $request );        else            abort( 401, 'Esta acción no está autorizada.' );    }}hasRole()是我User模型中的一个函数,用于检查用户是否有权访问某些管理路由:class User extends Authenticatable{    /**     *  Role-user relation (one-to-many)     */    public function roles() {        return $this->belongsToMany( Role::class )->withTimestamps();    }    /**     *  Authorize roles     */    public function authorizeRoles($roles) {        if ($this->hasAnyRole($roles))            return true;        abort( 401, 'Esta acción no está autorizada.' );    }    /**     *  Check if user has specified role     */    public function hasRole($role) {        if ($this->roles()->where('name', $role)->first())            return true;        return false;    }}
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

当我的会话到期并重新加载页面时,我收到以下错误(在以下代码块中发出信号的行):


hasRole()错误:调用成员函数null


class AdminMiddleware

{

    public function handle($request, Closure $next) {

        if ($request->user()->hasRole('admin')) // this line

            return $next( $request );

        else

            abort( 401, 'Esta acción no está autorizada.' );

    }

}

hasRole()是我User模型中的一个函数,用于检查用户是否有权访问某些管理路由:


class User extends Authenticatable

{

    /**

     *  Role-user relation (one-to-many)

     */

    public function roles() {

        return $this->belongsToMany( Role::class )->withTimestamps();

    }



    /**

     *  Authorize roles

     */

    public function authorizeRoles($roles) {

        if ($this->hasAnyRole($roles))

            return true;


        abort( 401, 'Esta acción no está autorizada.' );

    }



    /**

     *  Check if user has specified role

     */

    public function hasRole($role) {

        if ($this->roles()->where('name', $role)->first())

            return true;


        return false;

    }

}


查看完整回答
反对 回复 2023-04-28
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信