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

前端之家收集整理的这篇文章主要介绍了php – Laravel-5向Auth添加hasRole方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试扩展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 App\Http\Middleware\Auth;

use Closure;
use Illuminate\Contracts\Auth\Guard;

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  \Illuminate\Http\Request  $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);
        }

    }
}
@H_502_26@解决方法
您可以尝试将以下内容添加到您的用户模型中: –

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 Your\User\Roles\Model::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);
    }

}

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

猜你在找的Laravel相关文章