laravel权限验证实操02
2019-08-08 21:36
1196 查看
[code]<?php namespace App\Http\Middleware; use App\User; use Closure; use Illuminate\Support\Facades\DB; class AdminCheck { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ private $Allow = []; private $ignore = ['admin-login','admin-captcha','tips','admin-logout']; public function handle($request, Closure $next) { $data = $request->all(); $ignore = []; foreach ($this->ignore as $urls){ $ignore[] = Route($urls); } $url = $request->url(); if(in_array($url,$ignore)){ return $next($request); } $id = $request->session()->get('admin_id'); $username = $request->session()->get('admin_username'); $salt = $request->session()->get('salt'); if(empty($id) || empty($username) || empty($salt) ){ return redirect()->Route('admin-login'); } $check = self::checkUser($id); if(false==$check){ $request->session()->forget('admin_id'); $request->session()->forget('admin_username'); $salt = $request->session()->forget('salt'); return redirect()->Route('admin-login'); } //查询是否是超级管理员 if($check->is_admin==1){ //可以跳过所有的检查 return $next($request); } self::getRoleAcess($id); if(!in_array($url,$this->Allow)){ //echo '您没有权限访问,请联系管理员!'; return redirect()->Route('tips'); exit(); } return $next($request); } private function checkUser($uid){ $user = User::find($uid); return $user; // dd($user); /*if($user){ return true; }else{ return false; }*/ } private function getRoleAcess($uid){ //查询出用户所属的角色ID $roles = DB::table('role_user')->where('user_id',$uid)->get(); $roles = $roles->toArray(); $roleIds = array_column($roles,'role_id'); //根据角色ID查询角色所有的功能 //sql= SELECT * FROM role_access where id in(1,2,3,4); $role_access = DB::table('role_access')->wherein('role_id',$roleIds)->get(); $role_access = $role_access->toArray(); $accessIds = array_column($role_access,'access_id'); //根据AccessId 来查询功能表所有功能URL路由 $access = DB::table('access')->wherein('id',$accessIds)->get(); foreach ($access as $v){ $temp_url = explode('|',$v->route); foreach ($temp_url as $tv){ if(empty($tv)) continue; $url = Route($tv); $this->Allow[] = $url; } } } }
相关文章推荐
- Laravel Permission 实现 RBAC 权限实操详解
- Struts2自定义拦截器实例—登陆权限验证
- webservice使用拦截器进行权限验证
- 基于身份验证票据的权限系统的实现之源代码篇
- Struts2自定义拦截器实例—登陆权限验证
- ASP.NET MVC异步验证是如何工作的02,异步验证表单元素的创建
- Laravel5权限管理方法详解
- Spring AOP 实现用户权限验证
- HBase源码分析之Simple权限验证
- 【laravel54】关于用户权限认证RBAC和无限极分类
- AIDL权限验证
- 程序页面读取权限验证的一个小技巧
- PHP 框架Laravel Eloquent 实现身份验证
- Asp.net的登录验证方法Web.config访问权限配置
- 用Adapter模式重构以前系统的登录权限验证
- 无法在web服务器上启动调试,你没有调试该服务器的权限。验证你是服务器上“Debugger Users”组的成员
- SpringMVC实现注解式权限验证(转)
- laravel拓展validator验证
- Linux系统的开机重启和用户权限相关的命令实操
- .NET 实现自定义ContextUser的Identity和Principal实现自定义用户信息,权限验证。