Example #1
0
 /**
  * 登陆
  */
 public function login()
 {
     if (IS_POST) {
         //登陆验证
         if ($this->model->create() !== false) {
             if (($result = $this->model->login(I('post.'))) !== false) {
                 //是否记住密码
                 $remember = false;
                 if (I('post.remember')) {
                     $remember = true;
                 }
                 //保存用户登录
                 login($result['userinfo'], $remember);
                 //保存用户权限ids和urls
                 $permissions = $result['permissions'];
                 permissionId(array_column($permissions, 'id'));
                 permissionURL(array_column($permissions, 'url'));
                 //跳转后台首页
                 $this->success('登陆成功', U('Index/index'));
                 return;
             }
         }
         $this->error(show_model_error($this->model), U('login'));
     } else {
         //登陆表单
         $this->display('login');
     }
 }
 /**
  * 验证用户的登陆以及权限
  * @param mixed $params
  */
 public function run(&$params)
 {
     //1. 得到用户访问的url
     $url = MODULE_NAME . '/' . CONTROLLER_NAME . '/' . ACTION_NAME;
     //2. 检测用户的登陆
     //2.1 是否为忽略验证登陆url
     $ignore_login = C('IGNORE_LOGIN');
     //不验证登陆的数组
     if (in_array($url, $ignore_login)) {
         return;
     }
     //2.2 是否登陆
     if ($id = is_login()) {
         //session
         defined('UID') or define('UID', $id);
     } elseif (!empty($userinfo = cookie('userinfo'))) {
         //cookie
         session('userinfo', $userinfo);
         //cookie中有数据,则为用户设置session,同时设置UID
         defined('UID') or define('UID', $userinfo['id']);
     } else {
         //未登陆
         redirect(U('Admin/Admin/login'), 1, '请登录...');
         return;
     }
     //3. 验证用户的url权限
     //3.1 是否开启验证
     if (!C('IS_CHECK_PERMISSION')) {
         return;
     }
     //3.2 是否超级管理员
     $administar = C('ADMINISTAR');
     $userinfo = login();
     if (in_array($userinfo['username'], $administar)) {
         return;
     }
     //3.3 是否为忽略验证url
     $ignore_permission = C('IGNORE_PERMISSION');
     //不验证权限的数组
     if (in_array($url, $ignore_permission)) {
         return;
     }
     //3.3 是否在权限之内
     $permission_urls = permissionURL();
     //得到用户的访问权限数组
     if (!in_array($url, $permission_urls)) {
         echo 'forbidden..........';
         exit;
     }
 }