-- 密码改造一期:互联网管理端身份鉴别(短信双因子 + 登录策略) -- 执行前请备份 sys_user -- -- 说明: -- 1. sys_user 扩展 login_policy 等字段,支持按用户覆盖登录方式 -- 2. sys_login_policy 按「网络区域 + 角色」配置最低鉴别要求(如互联网 admin → SMS_2FA) -- 3. 应用配置 login.network-zone=INTERNET 且 internet-sms.enabled=true 后生效 -- 4. 管理员账号须填写 phonenumber,否则无法接收登录短信 -- 1. 用户表扩展(证书登录字段一期预留;login_policy 用于登录策略) ALTER TABLE sys_user ADD COLUMN cert_sn VARCHAR(128) DEFAULT NULL COMMENT '国密证书序列号' AFTER remark, ADD COLUMN cert_subject VARCHAR(512) DEFAULT NULL COMMENT '证书主题 DN' AFTER cert_sn, ADD COLUMN login_policy VARCHAR(32) DEFAULT 'PASSWORD' COMMENT '登录策略:PASSWORD/CERT/SMS_2FA' AFTER cert_subject; CREATE INDEX idx_sys_user_cert_sn ON sys_user (cert_sn); -- 2. 登录策略配置表 DROP TABLE IF EXISTS sys_login_policy; CREATE TABLE sys_login_policy ( policy_id BIGINT(20) NOT NULL AUTO_INCREMENT, role_key VARCHAR(100) DEFAULT NULL COMMENT '角色权限字符,空表示默认', network_zone VARCHAR(32) NOT NULL COMMENT 'INTERNAL/INTERNET', policy_type VARCHAR(32) NOT NULL COMMENT 'CERT/SMS_2FA/PASSWORD', enabled CHAR(1) DEFAULT '1', remark VARCHAR(500) DEFAULT NULL, create_by VARCHAR(64) DEFAULT '', create_time DATETIME DEFAULT NULL, update_by VARCHAR(64) DEFAULT '', update_time DATETIME DEFAULT NULL, PRIMARY KEY (policy_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='登录策略配置'; -- 互联网环境:超级管理员强制短信双因子 INSERT INTO sys_login_policy (role_key, network_zone, policy_type, enabled, remark, create_time) VALUES ('admin', 'INTERNET', 'SMS_2FA', '1', '互联网超级管理员双因子', NOW()); -- 互联网环境:默认策略(未匹配角色时) INSERT INTO sys_login_policy (role_key, network_zone, policy_type, enabled, remark, create_time) VALUES (NULL, 'INTERNET', 'SMS_2FA', '1', '互联网管理端默认双因子', NOW());