制作网站商城,宁波网站设计方案,研究生院 网站 建设,灌南县规划局网站一品嘉苑规划建设一、开放路由 在根目录下route文件夹下修改app.php文件#xff0c;代码如下#xff1a; // 操作日志Route::get(token/get_list,permission.Token/getList);// 获取操作日志列表Route::post(token/get_all,permission.Token/getAll);// 获取操作日志所有数据Route::post(toke…
一、开放路由 在根目录下route文件夹下修改app.php文件代码如下 // 操作日志Route::get(token/get_list,permission.Token/getList);// 获取操作日志列表Route::post(token/get_all,permission.Token/getAll);// 获取操作日志所有数据Route::post(token/get_info,permission.Token/getInfo);// 获取操作日志单条数据二、开发日志控制管理 在根目录下app文件夹下controller文件夹下permission文件夹下添加操作日志控制文件类并命名为Token.php代码如下
?php
/*** 用户操作记录管理* User: 龙哥·三年风水* Date: 2024/12/13* Time: 15:54*/
namespace app\controller\permission;
use app\controller\Base;
use app\model\common\Token as TokenModel;
use app\model\permission\Admin as AdminModel;
use app\model\permission\Menu as PMModel;
class Token extends Base
{//分页数据public function getList(){$where [];$param $this-request-param();if (!empty($param[username])) $where[] [pa.username, LIKE, % . $param[username] . %];if (!empty($param[create_time])) $where[] [a.create_time, , $param[create_time]];if (!empty($param[token_type]))$where[] [a.token_type, , $param[token_type]];$join[] [permission_admin pa,a.admin_id pa.id];$resList TokenModel::dataList($where,a.id,a.token_type,a.menu_name,pa.username,a.login_time, [$param[currentPage], $param[currentSize]],a.login_time DESC,$join);$list $resList[info];foreach ($list as $k $v) {$list[$k][token_type] TokenModel::tokenType($v[token_type]);$list[$k][menu_name] PMModel::menunameTitle($v[menu_name]);}$res[list] $list;$res[meat] $resList[page];$this-setToken(4,PermissionTokenIndexList);return succ(操作成功,$res);}//所有数据public function getAll(){$this-setToken(5,PermissionTokenIndexAll);$param $this-request-param();if (!empty($param[username])) $where[] [pa.username, LIKE, % . $param[username] . %];if (!empty($param[create_time])) $where[] [a.create_time, , $param[create_time]];if (!empty($param[token_type]))$where[] [a.token_type, , $param[token_type]];$join[] [permission_admin pa,a.admin_id pa.id];$list TokenModel::dataAll([status 1], a.id,a.token_type,a.menu_name,pa.username,a.login_time, a.login_time DESC,$join);foreach ($list as $k $v) {$list[$k][token_type] TokenModel::tokenType($v[token_type]);$list[$k][menu_name] PMModel::menunameTitle($v[menu_name]);}return succ(操作成功,$list);}//单条数据public function getInfo(){$this-setToken(6,PermissionTokenIndexDetails);$id $this-request-param(id, 0);if(empty($id))return err(主键参数必须上传);$data TokenModel::dataFind([id $id], token_type,menu_name,token,admin_id,random_number,create_time,login_time,expire_time,true);if(!empty($data)){$data[token_type] TokenModel::tokenType($data[token_type]);$data[menu_name] PMModel::menunameTitle($data[menu_name]);$data[username] AdminModel::dataFind([id $data[admin_id]],username,false);$data[expire_time] date(Y-m-d H:i:s,$data[expire_time]);unset($data[admin_id]);}return succ(操作成功,$data);}
}
三、修改日志数据控制层 在根目录下app文件夹下model文件夹下common文件夹下修改Token.php文件代码如下
?php
/*** 登录用户数据管理* User: 龙哥 三年风水* Date: 2024/10/29* Time: 10:26*/
namespace app\model\common;
use app\model\Tools;
use Redis\Redis;
use app\model\param\System as SystemModel;
use app\model\permission\Admin;
class Token extends Tools
{protected static $name permission_token;protected static $connection mysql;protected $pk token;//查询列表public static function dataList($where,$field,$limit,$order,$join []){return self::dataLists(self::$name, $where, $field, $limit, $order, $join, self::$connection);}//所有数据public static function dataAll($where,$field,$order,$join []){return self::dataAlls(self::$name, $where, $field, $order, $join, self::$connection);}//查询数据public static function dataFind($where [], $field, $findType true){return self::dataFinds(self::$name, $where, $field, $findType, self::$connection);}//保存数据public static function save($data, $where []){return self::dataSaves(self::$name, $data, $where, self::$connection);}//修改token整个状态public static function setToken($token, $attack, $clientIp){$data[admin_id] 0;$data[username] ;$data[avatar] ;$data[realname] ;$data[email] ;$data[ip] ;$data[department_id] 0;$data[grade_id] 0;$data[role_id] 0;$data[random_number] ;$redisToken Redis::select(config(cache.stores.redis.token_db))-get(token_.$token);if(empty($redisToken))return array(status false, info token已经过期咯,请重新登录!, data $data);//获取系统配置的过期时间$systemParam SystemModel::dataFind([id 1],platform_token_expira);//验证是否跨站攻击$attackToken Redis::select(config(cache.stores.redis.token_db))-get(token_ . $redisToken);if(!empty($attackToken)){if ($attackToken $attack){//如果传过来加密后的token与Redis里面记录的一样就禁止访问、延长过期时间并加入黑名单Redis::select(config(cache.stores.redis.token_db))-expire(token_.$token, $systemParam[platform_token_expira]);//加入黑名单//Redis::select(config(cache.stores.redis.default_db))-sadd(black-list, $clientIp);//return array(status false, info 跨站攻击, data $data);}}Redis::select(config(cache.stores.redis.token_db))-expire(token_.$token, $systemParam[platform_token_expira]);Redis::select(config(cache.stores.redis.token_db))-setex(token_ . $redisToken, $systemParam[platform_token_expira], $attack);$resAdminFind Admin::dataFind([id $redisToken], username,avatar,realname,email,ip,department_id,grade_id,role_id,status,true);if ($resAdminFind[status] ! 1) return array(status false, info 该用户已被禁用, data $data);$data[admin_id] $redisToken;$data[username] $resAdminFind[username];$data[avatar] $resAdminFind[avatar];$data[realname] $resAdminFind[realname];$data[email] $resAdminFind[email];$data[ip] $resAdminFind[ip];$data[department_id] $resAdminFind[department_id];$data[grade_id] $resAdminFind[grade_id];$data[role_id] $resAdminFind[role_id];$data[random_number] self::dataFind([token $token],random_number,false);return array(status true, info , data $data);}/*** 返回类型属性* User: 龙哥·三年风水* Date: 2024/12/13* Time: 11:22* param $tokenType 类型编号* return mixed*/public static function tokenType($tokenType){$arr [,登录,退出,自动退出,列表,所有,详情,保存,启禁用,删除,获取个人资料,修改个人资料,获取菜单权限,上传文件];return $arr[$tokenType];}
}