/** * 登陆 */ 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; } }