加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel-5向Auth添加hasRole方法

发布时间:2020-12-14 19:36:34 所属栏目:大数据 来源:网络整理
导读:我正在尝试扩展Laravel-5.1 Auth中间件,以便我可以添加自己的方法: 验证:: hasRole() 为了将新方法hasRole添加到Auth,我需要做什么? 这是我的路线文件: /* Administrator Routes */Route::group(['namespace' = 'Admin','middleware' = 'timesheets.admin
我正在尝试扩展Laravel-5.1 Auth中间件,以便我可以添加自己的方法:

验证:: hasRole()

为了将新方法hasRole添加到Auth,我需要做什么?

这是我的路线文件:

/* Administrator Routes */

Route::group(['namespace' => 'Admin','middleware' => 'timesheets.admin:Administrator'],function()
{
    Route::get('home','AdminController@index');
});

这是我的中间件文件:

<?php

namespace AppHttpMiddlewareAuth;

use Closure;
use IlluminateContractsAuthGuard;

class AdminAuthenticate
{
    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @return void
     */
    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
    public function handle($request,Closure $next,$role)
    {
        if ($this->auth->guest()) {
            if ($request->ajax()) {
                return response('Unauthorized.',401);
            } else {
                return redirect()->guest('login');
            }
        }

        if (auth()->check() && auth()->user()->hasRole($role)) {
            return $next($request);
        }

    }
}

解决方法

您可以尝试将以下内容添加到您的用户模型中: –

public function hasRole($role)
{
    return User::where('role',$role)->get();
}

首先应检查User表是否具有“role”字段,然后根据角色字段检查参数$role.

您可以通过执行以下操作进行检查:

if( Auth::user()->hasRole($role) )

您可能需要根据需要调整示例.需要帮助请叫我.

/ – – – – – – 编辑 – – – – – – – – -/

如果您有两个单独的表,一个持有用户信息,另一个持有用户权限/角色,您可以向User模型添加另一个功能:

public function userID()
{
    return $this->user_id; 
}

这将检查您是否有用户ID字段(如果有),它将返回经过身份验证的用户的ID.

然后将其添加到hasRoles方法:

public function hasRoles($userID,$roles)
{
    return YourUserRolesModel::where('role',$role)->where('user_id',$user_id)->get();
}

您的中间件看起来像这样:

public function handle($request,$role)
{
    if ($this->auth->guest()) {
        if ($request->ajax()) {
            return response('Unauthorized.',401);
        } else {
            return redirect()->guest('login');
        }
    }

    $userID = Auth::user()->userID();

    if (auth()->check() && auth()->user()->hasRole($userID,$role)) {
        return $next($request);
    }

}

如果我理解你想要什么.我相信这对你有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读