搜索中心
搜索中心 搜索快照

开发必看 - 后台管理

后台管理员相关操作

// 使用的 Admin 类完整路径为
use ModStart\Admin\Auth\Admin;
// 判断当前管理员是否已登录
Admin::isLogin();
// 当前已登录管理员的ID
$adminUserId = Admin::id();
// 根据管理员ID获取管理员信息
Admin::get( $adminUserId );
// 增加管理员信息日志
Admin::addInfoLog( $adminUserId, '日志摘要', ['数据'=>'数据值'] );
// 增加管理员错误日志
Admin::addErrorLog( $adminUserId, '错误摘要', ['数据键'=>'数据值'] );
// 如果两个数组数据不相同记录日志
Admin::addInfoLogIfChanged( $adminUserId, '数据改变了', ['数据'=>'数据值旧'], ['数据'=>'数据值新'] );

后台免登陆接口请求

  • 要求:(MSCore >= 3.6.0)
  • 后台接口指 module/Xxx/Admin 中的接口

免登陆接口使用说明

系统提供了后台接口请求免登陆的功能,请求时后台接口时在http请求头中携带以下参数

Header名称 Header值 示例值
auth-admin-user-id 后台管理员ID 1
auth-admin-timestamp 当前时间戳 单位为秒
auth-admin-request-id 请求ID 随机字符串,至少为10位,每次请求不同
auth-admin-sign 签名 为32位ID值,签名计算方法如下
// 管理员ID
$adminUserId = 1;
// 管理员用户名
$adminUserName = 'admin';
// 管理员密码MD5值(参考 admin_user 中的 password 字段 和 passwordSalt 字段)
$adminPassword = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$adminPasswordSalt = 'xxxxxxxxxxx';
// 当前时间戳
$timestamp = time();
// 随机字符串,保证每次请求随机字符串不同
$requestId = uniqid();
// 拼接字符串
$md5String = "$timestamp:$requestId:$adminUserId:$adminUserName:$adminPassword:$adminPasswordSalt";
// 计算签名
$sign = md5($md5String);

免登陆请求示例代码

$adminUserId = 1;
$adminUserName = 'cms';
$adminPassword = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$adminPasswordSalt = 'xxxxxxxxxx';
$timestamp = time();
$requestId = uniqid();
$md5String = "$timestamp:$requestId:$adminUserId:$adminUserName:$adminPassword:$adminPasswordSalt";
$sign = md5($md5String);
$ret = CurlUtil::post('http://example.com/admin/site/config/setting', [
    'siteName'=>'网站名称'
], [
    'header' => [
        'auth-admin-user-id' => $adminUserId,
        'auth-admin-timestamp' => $timestamp,
        'auth-admin-request-id' => $requestId,
        'auth-admin-sign' => $sign,
    ]
]);
print_r($ret);

后台管理多标签

开发一个原生的 blade 后台界面,应该使用以下框架

@extends('modstart::admin.frame')
@section('pageTitle')页面标题@endsection
@section($_tabSectionName)
    页面内容
@endsection

其中 $_tabSectionName 会自动检测是否是在标签中显示,标签中显示的页面会自动忽略左侧菜单。

左侧菜单检测原理是会在页面 url 中传递一个 _is_tab 参数来标识是否是标签页,对于自定义开发的页面可以自行处理。

如果想要使用通用(标签页中不显示菜单,直链显示菜单)的链接,可以使用以下方法生成链接。

\ModStart\Core\Util\CRUDUtil::adminUrlWithTab('path/to/page')

以上的方法,在标签页中会自动追加 _is_tab=1 参数,以便在页面中自动隐藏左侧菜单。

查看原文
QQ
微信
客服