Warning: Use of undefined constant str - assumed 'str' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 4

Warning: Use of undefined constant str - assumed 'str' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return1.php on line 353

Deprecated: Function get_magic_quotes_gpc() is deprecated in /www/wwwroot/www.ymama.net/config/return1.php on line 19

Deprecated: Function get_magic_quotes_gpc() is deprecated in /www/wwwroot/www.ymama.net/config/return1.php on line 19

Warning: Use of undefined constant type1id - assumed 'type1id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 7

Warning: Use of undefined constant name1 - assumed 'name1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 44

Warning: Use of undefined constant type2id - assumed 'type2id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 8

Warning: Use of undefined constant name2 - assumed 'name2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 45

Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 11

Warning: Use of undefined constant SHOPUSER - assumed 'SHOPUSER' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/function.php on line 340

Warning: Use of undefined constant txt - assumed 'txt' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 12

Warning: Use of undefined constant str - assumed 'str' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return1.php on line 353

Deprecated: Function get_magic_quotes_gpc() is deprecated in /www/wwwroot/www.ymama.net/config/return1.php on line 19
<br /> <b>Warning</b>: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/txtlist.php</b> on line <b>22</b><br /> 大型后台管理系统,用户登录状态该如何保存? - 源码码网
Warning: Use of undefined constant ifwap - assumed 'ifwap' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 24
您好!欢迎来到源码码网


Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 63
大型后台管理系统,用户登录状态该如何保存?

  • 源码教程

  • Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 66
  • 来源:
    Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 67
    源码码网

  • Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 69
  • 编辑:
    Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 70
    源码码网
  • 时间:
    Warning: Use of undefined constant lastsj - assumed 'lastsj' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 72
    2025-11-06 12:16
  • 阅读:
    Warning: Use of undefined constant djl - assumed 'djl' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 73
    219

大型后台管理系统的用户登录状态保存需要综合考虑安全性用户体验系统架构。以下是企业级的完整方案:

1. 多层级存储策略

class AuthManager {
    constructor() {
        this.storage = {
            // 内存存储(最高安全)
            memory: new Map(),
            
            // 会话级存储(较高安全)
            session: sessionStorage,
            
            // 持久化存储(用户偏好)
            local: localStorage,
            
            // 自动传输存储(兼容性)
            cookie: this.cookieManager
        }
    }
    
    // 分级存储策略
    setLoginState(userData) {
        // 1. 敏感数据 - 内存存储(刷新即失)
        this.storage.memory.set('access_token', userData.accessToken)
        this.storage.memory.set('session_key', userData.sessionKey)
        
        // 2. 刷新令牌 - HttpOnly Cookie(防XSS)
        this.setHttpOnlyCookie('refresh_token', userData.refreshToken, {
            maxAge: 7 * 24 * 60 * 60, // 7天
            httpOnly: true,
            secure: true,
            sameSite: 'strict'
        })
        
        // 3. 用户基本信息 - localStorage(持久化)
        this.storage.local.setItem('user_info', JSON.stringify({
            id: userData.id,
            name: userData.name,
            avatar: userData.avatar,
            roles: userData.roles,
            permissions: userData.permissions
        }))
        
        // 4. 登录状态标识 - sessionStorage(标签页级)
        this.storage.session.setItem('is_logged_in', 'true')
        this.storage.session.setItem('login_timestamp', Date.now())
        
        // 5. 辅助信息 - 普通Cookie
        this.setCookie('user_theme', userData.theme, { maxAge: 30 * 24 * 60 * 60 })
    }
}

2. Token 双令牌机制

class TokenService {
    constructor() {
        this.accessToken = null
        this.refreshToken = null
        this.tokenRefreshTimeout = null
    }
    
    // 设置双令牌
    setTokens(accessToken, refreshToken) {
        // Access Token - 短期(内存 + 备用localStorage)
        this.accessToken = accessToken
        localStorage.setItem('access_token_backup', accessToken)
        localStorage.setItem('access_token_expire', Date.now() + 2 * 60 * 60 * 1000) // 2小时
        
        // Refresh Token - 长期(HttpOnly Cookie)
        this.setHttpOnlyCookie('refresh_token', refreshToken, {
            maxAge: 7 * 24 * 60 * 60,
            httpOnly: true,
            secure: true
        })
        
        // 启动token自动刷新
        this.startTokenRefresh()
    }
    
    // 自动刷新token
    startTokenRefresh() {
        // 在token过期前5分钟自动刷新
        const refreshTime = 115 * 60 * 1000 // 115分钟
        
        this.tokenRefreshTimeout = setTimeout(async () => {
            try {
                await this.refreshAccessToken()
            } catch (error) {
                console.error('Token自动刷新失败:', error)
                this.handleTokenRefreshFailed()
            }
        }, refreshTime)
    }
    
    // 刷新access token
    async refreshAccessToken() {
        const refreshToken = this.getRefreshToken()
        
        const response = await fetch('/api/auth/refresh', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({ refreshToken })
        })
        
        if (response.ok) {
            const data = await response.json()
            this.setTokens(data.accessToken, data.refreshToken)
            return data.accessToken
        } else {
            throw new Error('刷新token失败')
        }
    }
}

3. 应用启动状态恢复

class AppInitializer {
    constructor() {
        this.authManager = new AuthManager()
        this.tokenService = new TokenService()
    }
    
    // 应用启动时恢复登录状态
    async initializeApp() {
        console.log('🚀 应用初始化...')
        
        // 1. 检查内存中的token(最高优先级)
        if (this.tokenService.accessToken) {
            console.log('✅ 内存中存在有效token')
            return await this.validateCurrentToken()
        }
        
        // 2. 检查备份的access token
        const backupToken = localStorage.getItem('access_token_backup')
        const tokenExpire = localStorage.getItem('access_token_expire')
        
        if (backupToken && tokenExpire && Date.now() < parseInt(tokenExpire)) {
            console.log('✅ 使用备份token恢复')
            this.tokenService.accessToken = backupToken
            return await this.validateCurrentToken()
        }
        
        // 3. 尝试使用refresh token刷新
        if (this.getRefreshToken()) {
            console.log('🔄 尝试刷新token...')
            try {
                await this.tokenService.refreshAccessToken()
                return await this.validateCurrentToken()
            } catch (error) {
                console.log('❌ token刷新失败')
                this.clearAuthState()
            }
        }
        
        // 4. 最终检查session状态
        if (sessionStorage.getItem('is_logged_in') === 'true') {
            console.log('🔍 会话状态存在,但token无效')
            // 可能需要重新认证
        }
        
        // 5. 未登录状态
        console.log('🔒 用户未登录')
        this.redirectToLogin()
    }
    
    // 验证当前token有效性
    async validateCurrentToken() {
        try {
            const response = await fetch('/api/auth/validate', {
                headers: {
                    'Authorization': `Bearer ${this.tokenService.accessToken}`
                }
            })
            
            if (response.ok) {
                const userData = await response.json()
                this.authManager.setUserData(userData)
                console.log('✅ 登录状态验证成功')
                return true
            } else {
                throw new Error('Token验证失败')
            }
        } catch (error) {
            console.error('❌ Token验证失败:', error)
            this.clearAuthState()
            return false
        }
    }
}

4. 请求拦截与自动处理

// axios请求拦截配置
import axios from 'axios'

class RequestInterceptor {
    constructor() {
        this.setupInterceptors()
    }
    
    setupInterceptors() {
        // 请求拦截器
        axios.interceptors.request.use(
            (config) => {
                const token = this.getAccessToken()
                if (token) {
                    config.headers.Authorization = `Bearer ${token}`
                }
                return config
            },
            (error) => Promise.reject(error)
        )
        
        // 响应拦截器 - 处理认证失败
        axios.interceptors.response.use(
            (response) => response,
            async (error) => {
                const originalRequest = error.config
                
                // 处理401错误(未认证)
                if (error.response?.status === 401 && !originalRequest._retry) {
                    originalRequest._retry = true
                    
                    try {
                        // 尝试刷新token
                        const newToken = await this.tokenService.refreshAccessToken()
                        originalRequest.headers.Authorization = `Bearer ${newToken}`
                        return axios(originalRequest)
                    } catch (refreshError) {
                        // 刷新失败,清除登录状态
                        this.clearAuthState()
                        this.redirectToLogin()
                        return Promise.reject(refreshError)
                    }
                }
                
                // 处理403错误(权限不足)
                if (error.response?.status === 403) {
                    this.showPermissionDenied()
                    return Promise.reject(error)
                }
                
                return Promise.reject(error)
            }
        )
    }
}

5. 安全增强措施

class SecurityEnhancer {
    constructor() {
        this.setupSecurityMeasures()
    }
    
    setupSecurityMeasures() {
        // 1. 防止XSS攻击
        this.sanitizeStorage()
        
        // 2. 设置安全头
        this.setSecurityHeaders()
        
        // 3. 监听异常行为
        this.setupBehaviorMonitoring()
    }
    
    // 存储数据清理
    sanitizeStorage() {
        // 定期清理过期的存储数据
        setInterval(() => {
            this.cleanExpiredStorage()
        }, 60 * 60 * 1000) // 每小时清理一次
    }
    
    // 行为监控
    setupBehaviorMonitoring() {
        // 监听多标签页登录冲突
        window.addEventListener('storage', (event) => {
            if (event.key === 'login_conflict' && event.newValue) {
                this.handleLoginConflict()
            }
        })
        
        // 监听用户活跃度
        this.setupActivityMonitoring()
    }
    
    // 用户活跃度监控
    setupActivityMonitoring() {
        let lastActivityTime = Date.now()
        
        const updateActivityTime = () => {
            lastActivityTime = Date.now()
        }
        
        // 监听用户操作
        ['mousedown', 'keypress', 'scroll', 'touchstart'].forEach(event => {
            document.addEventListener(event, updateActivityTime, true)
        })
        
        // 检查用户是否活跃
        setInterval(() => {
            const inactiveTime = Date.now() - lastActivityTime
            if (inactiveTime > 30 * 60 * 1000) { // 30分钟无操作
                this.handleUserInactive()
            }
        }, 60 * 1000) // 每分钟检查一次
    }
}

6. 完整的登录状态管理

// 主入口文件 - main.js
import { createApp } from 'vue'
import App from './App.vue'
import { AuthManager, TokenService, AppInitializer } from './services/auth'

const app = createApp(App)

// 初始化认证服务
const authManager = new AuthManager()
const tokenService = new TokenService()
const appInitializer = new AppInitializer(authManager, tokenService)

// 全局提供认证服务
app.provide('authManager', authManager)
app.provide('tokenService', tokenService)

// 应用启动
appInitializer.initializeApp().then((isAuthenticated) => {
    if (isAuthenticated) {
        console.log('✅ 应用启动完成 - 用户已登录')
        app.mount('#app')
    } else {
        console.log('🔒 应用启动完成 - 用户未登录')
        // 可以挂载应用但显示登录界面
        app.mount('#app')
    }
}).catch((error) => {
    console.error('❌ 应用启动失败:', error)
    // 错误处理
})

7. 不同场景的配置方案

// 安全等级配置
export const SECURITY_LEVELS = {
    // 金融级安全
    FINANCE: {
        accessTokenExpire: 15 * 60, // 15分钟
        refreshTokenExpire: 24 * 60 * 60, // 24小时
        autoLogout: 30 * 60, // 30分钟无操作自动登出
        multiFactorAuth: true,
        sessionPerDevice: true
    },
    
    // 企业级安全
    ENTERPRISE: {
        accessTokenExpire: 2 * 60 * 60, // 2小时
        refreshTokenExpire: 7 * 24 * 60 * 60, // 7天
        autoLogout: 60 * 60, // 1小时无操作
        multiFactorAuth: false,
        sessionPerDevice: false
    },
    
    // 内部系统
    INTERNAL: {
        accessTokenExpire: 8 * 60 * 60, // 8小时
        refreshTokenExpire: 30 * 24 * 60 * 60, // 30天
        autoLogout: 4 * 60 * 60, // 4小时无操作
        multiFactorAuth: false,
        rememberMe: true
    }
}

总结

大型后台管理系统的登录状态管理应该是:

  1. 分层存储:敏感数据存内存,持久数据存localStorage,自动传输用Cookie

  2. 双令牌机制:短期access token + 长期refresh token

  3. 自动恢复:应用启动时智能恢复登录状态

  4. 安全增强:XSS防护、行为监控、自动登出

  5. 错误处理:完善的token刷新和错误处理机制

  6. 灵活配置:根据不同安全需求调整策略

这样的设计既保证了安全性,又提供了良好的用户体验。


特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;

Warning: Use of undefined constant bh - assumed 'bh' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 95
全部评论(
Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 26
0)

Warning: Use of undefined constant SHOPUSER - assumed 'SHOPUSER' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 108
推荐阅读

Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 147
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/txtlist.php</b> on line <b>150</b><br />
大型后台管理系统,用户登录状态该如何保存?

  • Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 151
    大型后台管理系统,用户登录状态该如何保存?

  • Warning: Use of undefined constant wdes - assumed 'wdes' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 152
    大型后台管理系统的用户登录状态保存需要综合考虑安全性、用户体验和系统架构。以下是企业级的完整方案:1.多层级存储策略class AuthManager {    constructor() {        this.storage = { &n

  • Warning: Use of undefined constant type1id - assumed 'type1id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 153

    Warning: Use of undefined constant name1 - assumed 'name1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 44
    源码教程

  • Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 154
  • 来源:
    Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 155
    源码码网

  • Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 157
  • 编辑:
    Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 158
    源码码网
  • 时间:
    Warning: Use of undefined constant lastsj - assumed 'lastsj' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 160
    2025-11-06 12:16
  • 阅读:
    Warning: Use of undefined constant djl - assumed 'djl' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 161
    220

Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 147
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/txtlist.php</b> on line <b>150</b><br />
源码交易平台的支付困局与解决方案:如何通过专业支付系统提升交易效率

  • Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 151
    源码交易平台的支付困局与解决方案:如何通过专业支付系统提升交易效率

  • Warning: Use of undefined constant wdes - assumed 'wdes' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 152
    在数字经济蓬勃发展的今天,源码交易市场已成为互联网创业者和开发商的重要资源池。从电商系统源码到社交应用框架,从小程序解决方案到企业级管理系统,越来越多的开发者、初创企业和传统商家通过源码交易平台快速获取技术资产,实现商业目标的加速。源码交易市场的繁荣反映了数字化转型的迫切需求——企业需要快速迭代,开发者需要快速变现,用户需要快速启动。然而,在这个高速发展的市场中,一个长期被忽视但至关重要的问题浮现出来:支付系统的效率与安全性已成为制约交

  • Warning: Use of undefined constant type1id - assumed 'type1id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 153

    Warning: Use of undefined constant name1 - assumed 'name1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 44
    行业资讯

  • Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 154
  • 来源:
    Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 155
    源码码网

  • Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 157
  • 编辑:
    Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 158
    源码码网
  • 时间:
    Warning: Use of undefined constant lastsj - assumed 'lastsj' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 160
    2025-10-23 15:16
  • 阅读:
    Warning: Use of undefined constant djl - assumed 'djl' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 161
    206

Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 147
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/txtlist.php</b> on line <b>150</b><br />
Spring Boot 工程中 maven-surefire-plugin 测试执行失败及解决方法

  • Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 151
    Spring Boot 工程中 maven-surefire-plugin 测试执行失败及解决方法

  • Warning: Use of undefined constant wdes - assumed 'wdes' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 152
    在SpringBoot工程编译时遇到maven-surefire-plugin的测试执行失败错误(Failedtoexecutegoalorg.apache.maven.plugins:maven-surefire-plugin:3.5.3:test),通常与测试环节相关。以下是常见原因及解决方法:1.测试用例执行失败• 原因:最常见的是测试用例(*Test.java)运行时抛出异常(如断言失败、空指针等),导

  • Warning: Use of undefined constant type1id - assumed 'type1id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 153

    Warning: Use of undefined constant name1 - assumed 'name1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 44
    源码教程

  • Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 154
  • 来源:
    Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 155
    源码码网

  • Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 157
  • 编辑:
    Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 158
    源码码网
  • 时间:
    Warning: Use of undefined constant lastsj - assumed 'lastsj' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 160
    2025-10-13 10:57
  • 阅读:
    Warning: Use of undefined constant djl - assumed 'djl' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 161
    250

Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 147
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/txtlist.php</b> on line <b>150</b><br />
WeMark - 微信小程序图片水印

  • Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 151
    WeMark - 微信小程序图片水印

  • Warning: Use of undefined constant wdes - assumed 'wdes' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 152
    一个纯前端的微信小程序图片水印工具。支持文字/图片水印、单个与全屏两种模式,透明度与角度调节、单个水印位置X/Y控制,预览与对比模态、历史记录(100条)等功能。

  • Warning: Use of undefined constant type1id - assumed 'type1id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 153

    Warning: Use of undefined constant name1 - assumed 'name1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 44
    源码教程

  • Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 154
  • 来源:
    Warning: Use of undefined constant ly - assumed 'ly' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 155
    源码码用户

  • Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 157
  • 编辑:
    Warning: Use of undefined constant zze - assumed 'zze' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 158
    yg
  • 时间:
    Warning: Use of undefined constant lastsj - assumed 'lastsj' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 160
    2025-09-22 16:09
  • 阅读:
    Warning: Use of undefined constant djl - assumed 'djl' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 161
    191

Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/txtlist.php on line 147

Warning: Use of undefined constant userid - assumed 'userid' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 2

Warning: Use of undefined constant type1 - assumed 'type1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 203

Warning: Use of undefined constant aurl - assumed 'aurl' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 211

Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 211

Warning: Use of undefined constant addir - assumed 'addir' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 211

Warning: Use of undefined constant bh - assumed 'bh' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 211

Warning: Use of undefined constant jpggif - assumed 'jpggif' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/config/return.php on line 211
企业网站建设
  • 商品推荐
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/right.php</b> on line <b>27</b><br />
B2C电商系统商城源码支持pC+小程序+公众号+H5可打包App源码
    Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    B2C电商系统商城源码支持pC+小程序+公众号+H5可打包App源...


    Warning: Use of undefined constant yhxs - assumed 'yhxs' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money2 - assumed 'money2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money3 - assumed 'money3' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj1 - assumed 'yhsj1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj2 - assumed 'yhsj2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    3680.00
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/right.php</b> on line <b>27</b><br />
原生开发淘宝客App,Android+ios独立开发,全开源支持二开
    Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    原生开发淘宝客App,Android+ios独立开发,全开源支持二...


    Warning: Use of undefined constant yhxs - assumed 'yhxs' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money2 - assumed 'money2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money3 - assumed 'money3' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj1 - assumed 'yhsj1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj2 - assumed 'yhsj2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    5800.00
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/right.php</b> on line <b>27</b><br />
知识付费系统在线教育平台源码+题库系统源码,PC+公众号商业授权
    Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    知识付费系统在线教育平台源码+题库系统源码,PC+公众号商业授权...


    Warning: Use of undefined constant yhxs - assumed 'yhxs' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money2 - assumed 'money2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money3 - assumed 'money3' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj1 - assumed 'yhsj1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj2 - assumed 'yhsj2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    7980.00
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/right.php</b> on line <b>27</b><br />
B2C单商户电商系统源码部署小程序+公众号+H5+App源码
    Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    B2C单商户电商系统源码部署小程序+公众号+H5+App源码...


    Warning: Use of undefined constant yhxs - assumed 'yhxs' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money2 - assumed 'money2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money3 - assumed 'money3' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj1 - assumed 'yhsj1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj2 - assumed 'yhsj2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    3280.00
  • <br />
<b>Warning</b>:  Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in <b>/www/wwwroot/www.ymama.net/news/right.php</b> on line <b>27</b><br />
教育知识付费系统源码带题库功能商业授权公众号+H5源码
    Warning: Use of undefined constant tit - assumed 'tit' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    教育知识付费系统源码带题库功能商业授权公众号+H5源码...


    Warning: Use of undefined constant yhxs - assumed 'yhxs' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money2 - assumed 'money2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant money3 - assumed 'money3' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj1 - assumed 'yhsj1' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant yhsj2 - assumed 'yhsj2' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27

    Warning: Use of undefined constant id - assumed 'id' (this will throw an Error in a future version of PHP) in /www/wwwroot/www.ymama.net/news/right.php on line 27
    6980.00
联系客服
源码代售 源码咨询 素材咨询 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部