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); } } 如果我理解你想要什么.我相信这对你有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |