YII 系统管理员
来源:互联网 发布:易酷cms包含漏洞维护 编辑:程序博客网 时间:2024/05/18 03:27
出于监控多用户操作后台的目的,往往需要把各个管理员操作了什么记录下来。这个功能用yii2来实现简直是太简单了!下边上代码~ 此demo基于advanced,具体功能可以参考demo 帐号demo 密码111111 在backend目录创建components/AdminLog.php <?ph...
出于监控多用户操作后台的目的,往往需要把各个管理员操作了什么记录下来。这个功能用yii2来实现简直是太简单了!下边上代码~
此demo基于advanced,具体功能可以参考demo 帐号demo 密码111111
在backend目录创建components/AdminLog.php
<?phpnamespace backend\components;use Yii;use yii\helpers\Url;class AdminLog{ public static function write($event) { // 排除日志表自身,没有主键的表不记录(没想到怎么记录。。每个表尽量都有主键吧,不一定非是自增id) if($event->sender instanceof \common\models\AdminLog || !$event->sender->primaryKey()) { return; } // 显示详情有待优化,不过基本功能完整齐全 if ($event->name == ActiveRecord::EVENT_AFTER_INSERT) { $description = "%s新增了表%s %s:%s的%s"; } elseif($event->name == ActiveRecord::EVENT_AFTER_UPDATE) { $description = "%s修改了表%s %s:%s的%s"; } else { $description = "%s删除了表%s %s:%s%s"; } if (!empty($event->changedAttributes)) { $desc = ''; foreach($event->changedAttributes as $name => $value) { $desc .= $name . ' : ' . $value . '=>' . $event->sender->getAttribute($name) . ','; } $desc = substr($desc, 0, -1); } else { $desc = ''; } $userName = Yii::$app->user->identity->username; $tableName = $event->sender->tableSchema->name; $description = sprintf($description, $userName, $tableName, $event->sender->primaryKey()[0], $event->sender->getPrimaryKey(), $desc); $route = Url::to(); $userId = Yii::$app->user->id; $ip = ip2long(Yii::$app->request->userIP); $data = [ 'route' => $route, 'description' => $description, 'user_id' => $userId, 'ip' => $ip ]; $model = new common\models\AdminLog(); $model->setAttributes($data); $model->save(); }}
在backend/config/main.php添加
'on beforeRequest' => function($event) { \yii\base\Event::on(\yii\db\BaseActiveRecord::className(), \yii\db\BaseActiveRecord::EVENT_AFTER_INSERT, ['backend\components\AdminLog', 'write']); \yii\base\Event::on(\yii\db\BaseActiveRecord::className(), \yii\db\BaseActiveRecord::EVENT_AFTER_UPDATE, ['backend\components\AdminLog', 'write']); \yii\base\Event::on(\yii\db\BaseActiveRecord::className(), \yii\db\BaseActiveRecord::EVENT_AFTER_DELETE, ['backend\components\AdminLog', 'write']); },
mysql中创建admin_log表
CREATE TABLE `admin_log` ( `id` int(10) NOT NULL AUTO_INCREMENT, `route` varchar(255) NOT NULL DEFAULT '', `description` text, `created_at` int(10) NOT NULL, `user_id` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
阅读全文
0 0
- YII 系统管理员
- Yii
- yii
- Yii
- yii
- yii
- yii
- Yii
- yii
- yii
- yii
- yii
- YII
- Yii
- Yii
- Yii
- Yii
- Yii
- 相关因子
- [CDH--启动组件报错UNKNOW]--zookeeper或者其他组件重启出错
- 深度学习与神经网络-吴恩达(Part2Week1)-神经网络的实用层面
- 设备管理
- 关于类数组
- YII 系统管理员
- 2.3 URL 快捷方式
- 实验四
- 深度学习辅助工具tensorboard可视化实现训练过程的动态监视
- 递归实现十进制到2(其他)进制的转换
- 架构设计(3)--架构模式
- Struts2 拦截器
- MFC VS2013 在静态库中使用MFC 和在共享DLL中使用MFC 切换
- java上传文件实例
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
皮肤过敏掉皮怎么办
皮试阳性怎么办
皮试过敏怎么办
小孩子头孢过敏怎么办
孩子头孢过敏怎么办
小孩头孢过敏怎么办
头孢过敏了怎么办
婴儿头孢过敏怎么办
破伤风皮试阳性怎么办
青霉素过敏怎么办
做皮试过敏怎么办
不能母乳喂养怎么办
白细胞减少怎么办
血黏度高怎么办
血粘度高怎么办
血浆粘度偏高怎么办
孕妇糖耐量偏高怎么办
去法国怎么办签证
吸水器吸不出水怎么办
财产保全败诉怎么办
被财产保全怎么办
耳朵后面长粉瘤怎么办
耳朵粉瘤怎么办
由癣退成白斑怎么办
母乳营养不足怎么办
母乳营养不好怎么办
奶水没有营养怎么办
玉米发霉怎么办
打印机偏色怎么办
墨盒堵塞怎么办
办公楼产权到期怎么办
自喷膜撕不掉怎么办
大班vip卡怎么办
美容院vip卡怎么办
现代vip卡怎么办
唯品会怎么办超级vip
静脉血管堵塞怎么办
肺功能不好怎么办
肺功能减退怎么办
肺部有气泡怎么办
肺部有肺大泡怎么办