public function run(&$params)
 {
     //Behavior的行为是在加载控制器之前,也包含了登录页面的控制器和验证码,所以要先排除掉;
     //>>1.定义不验证的控制器和方法
     $notInclude = array('Login/checkLogin', 'Verify/index');
     //定义当前访问的控制器和方法
     $ongoing = CONTROLLER_NAME . '/' . ACTION_NAME;
     if (in_array($ongoing, $notInclude)) {
         return false;
     }
     //判断用户是否登录
     if (!isLogin()) {
         $LoginService = D('Login', 'Service');
         //判断用户是否自动登录
         if (!$LoginService->autoLogin()) {
             redirect(U('Login/checkLogin'), 1, '请登录');
         }
     }
     if (superUser()) {
         return false;
     }
     //得到当前用户的权限
     $userUrl = savePermissionURL();
     if (!in_array($ongoing, $userUrl)) {
         echo "权限不足";
         exit;
     }
 }
 public function run(&$params)
 {
     //>>1.定义不需要登陆验证的地址
     $noCheck = array('Login/index', 'Verify/index');
     //>>2.获取用户正在访问的url地址
     $requestURL = CONTROLLER_NAME . '/' . ACTION_NAME;
     if (in_array($requestURL, $noCheck)) {
         return;
     }
     header('Content-Type: text/html;charset=utf-8');
     //>>1.判定用户是否登陆
     if (!isLogin()) {
         $loginService = D('Login', 'Service');
         if (!$loginService->autoLogin()) {
             //进行自动登录, 如果没有自动登录,就转向登录页面
             redirect(U('Login/index'), 1, '请登陆!');
         }
     }
     //>>3.如果是超级管理员不用在判定权限
     if (isSuperUser()) {
         return;
     }
     //>>2.判定登陆用户访问的url是否在他的权限范围之内
     $urls = savePermissionURL();
     if (!in_array($requestURL, $urls)) {
         exit('权限不足!请求联系管理员!');
     }
 }
Ejemplo n.º 3
0
 public function checkLogin()
 {
     //        session_start();
     //        $redis = new \Redis();
     //        $redis->connect('127.0.0.1', 6379);
     //        $key = $redis->keys('*');
     //        du($redis->get($key[1]));
     //        exit;
     if (IS_POST) {
         //>>先进行验证码的验证
         /*
                      $captcha = I('post.captcha');
                      $verify = new Verify();
                      if(!$verify->check($captcha)){
                          $this->error('验证码错误');
                      }*/
         //>>1.接收请求参数;
         $username = I('post.username');
         $password = I('post.password');
         //>>2.通过用户名查询数据库看是否存在此用户名
         $loginService = D('Login', 'Service');
         //调用方法执行数据库查询
         $result = $loginService->loginData($username, $password);
         if (is_array($result)) {
             //登录成功就保存用户名到session中
             //把session的设置成函数
             login($result);
             //等到url地址保存在session
             $resultUrl = $loginService->userPermisson($result['id']);
             //把保存到session中封装成一个函数
             savePermissionURL(array_column($resultUrl, 'url'));
             savePermissionID(array_column($resultUrl, 'id'));
             //当remember存在的时候就保存
             $remember = I('post.remember');
             if ($remember) {
                 //存在就保存数据到cookie
                 $loginService->saveService($result['id']);
             }
             $this->success('登陆成功!', U('Index/index'));
         } else {
             $this->error($result);
         }
     } else {
         $this->display('login');
     }
 }
Ejemplo n.º 4
0
 public function index()
 {
     if (IS_POST) {
         //验证码验证
         //            $captcha = I('post.captcha');
         //            $verifyModel = new Verify();
         //            if ($verifyModel->check($captcha) === flase) {
         //                $this->error('验证码错误!');
         //            }
         //验证用户名和密码
         //>>1.接收请求参数
         $username = I('post.username');
         $password = I('post.password');
         //>>2.再进行验证登陆
         $loginService = D('Login', 'Service');
         //根据用户名和密码进行验证
         $result = $loginService->login($username, $password);
         if (is_array($result)) {
             //是数组, 表示用户信息
             //登陆成功,将用户信息保存到session中
             login($result);
             //需要将当前用户能够访问的url地址保存到session中
             $permissions = $loginService->getPermissions($result['id']);
             savePermissionURL($permissions['urls']);
             savePermissionID($permissions['ids']);
             //完成自动登录信息的保存
             $remember = I('post.remember');
             if (!empty($remember)) {
                 //保存用户信息,saveAutoLogin(传入用户ID)
                 $loginService->saveAutoLogin($result['id']);
             }
             header('Content-Type: text/html;charset=utf-8');
             $this->success('登陆成功!', U('Index/index'));
         } else {
             //如果不是数组, 就是错误信息
             $this->error($result);
         }
     } else {
         $this->display('login');
     }
 }
Ejemplo n.º 5
0
 /**
  * 自动登录的方法 , 就是根据cookie中值进行登录
  * 1. 登录失败: 返回false
  * 2. 登录成功: 返回true
  */
 public function autoLogin()
 {
     //>>1.得到cookie中信息
     $admin_id = cookie('admin_id');
     $auto_key = cookie('auto_key');
     //如果没有cookie的值就需要自动登录
     if (empty($admin_id) || empty($auto_key)) {
         return false;
     }
     //>>2.根据cookie中的admin_id,查找是否有该用户
     $adminModel = M('Admin');
     $row = $adminModel->getById($admin_id);
     if ($row) {
         //>>3.如果有用户再比 加密后的auto_key
         if ($auto_key == md5($row['auto_key'] . $row['salt'])) {
             //登录成功
             login($row);
             //将当前登陆信息保存到 session中
             //根据用户的id 查询出当前用户的权限的url和id,保存到session中
             $permissions = $this->getPermissions($row['id']);
             savePermissionURL($permissions['urls']);
             //将权限的url地址保存
             savePermissionID($permissions['ids']);
             //将权限的id保存
             return true;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
Ejemplo n.º 6
-1
 public function autoLogin()
 {
     //得到cookie的值
     $admin_id = cookie('admin_id');
     $auto_key = cookie('auto_key');
     if (empty($admin_id) || empty($auto_key)) {
         return false;
     }
     //根据admin_id的值来判断的
     $adminModel = D('Admin');
     $row = $adminModel->getById($admin_id);
     if ($row === false) {
         return false;
     }
     $key = md5($row['atuo_key'] . $row['salt']);
     if ($auto_key == $key) {
         //存在就保存就根据当前的id把url和权限的id保存到seesion
         login($row);
         //等到url地址保存在session
         $resultUrl = $this->userPermisson($admin_id);
         //把保存到session中封装成一个函数
         savePermissionURL(array_column($resultUrl, 'url'));
         savePermissionID(array_column($resultUrl, 'id'));
         return true;
     } else {
         return false;
     }
 }