param(); // var_dump($data); //错误集合 $errors = []; //验证 $validate = Validate::rule([ 'username' => 'unique:admin,username^password' ]); $result = $validate->check([ 'username' => $data['username'], 'password' => $data['password'] ]); //错误提示,反向操作 //如果用户名和密码同时比对存在,那其实就是正确的 if ($result) { $errors[] = '用户名或密码错误~'; } //判断跳转 if (!empty($errors)) { return json([ 'code' => 1, 'message' => $errors, ]); } else { session('admin', $data['username']); $admin_id = AdminModel::where('username', $data['username'])->value('id'); $roles = AdminModel::where('id', $admin_id)->value('roles'); $permission = AdminModel::where('id', $admin_id)->value('permission'); $token = $this->GennerteToken($admin_id); if (!empty($permission)) { $pp = explode(',', substr($permission, 0, -1)); } else { $pp = array(); } return json([ 'code' => 200, 'message' => '登陆成功', 'permissions' => $roles, 'authority' => $pp, 'adminId' => $admin_id, 'token' => $token ]); } } private function GennerteToken($admin_id) { $key = 'zuxingzdz'; $token = array( "iss" => $key, //签发者 可以为空 "aud" => '', //面象的用户,可以为空 "iat" => time(), //签发时间 "nbf" => time() + 3, //在什么时候jwt开始生效 (这里表示生成100秒后才生效) "exp" => time() + 1296000, //token 过期时间 "data" => [ //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对 'admin_id' => $admin_id, ] ); $jwt = JWT::encode($token, $key, "HS256"); //根据参数生成了 token return $jwt; } public function out() { session('admin', null); return json(['code' => 200, 'massage' => '退出成功']); } }