美文网首页
SaToken 持久化到本地的方法

SaToken 持久化到本地的方法

作者: 雁过留声_泪落无痕 | 来源:发表于2023-12-12 14:10 被阅读0次

本地测试,暂无 redis,又不想每次重新 run 之后都去登录(SaToken 默认是存到内存中的)。

LocalFileSaTokenDao .kt:

@Component
class LocalFileSaTokenDao : SaTokenDaoDefaultImpl(), ApplicationListener<ContextClosedEvent> {

    companion object {
        const val DATA_FILE_PATH = "build/sa-token-data.txt"
        const val EXPIRE_FILE_PATH = "build/sa-token-expire.txt"
    }

    @PostConstruct
    fun myInit() {
        val file = File(DATA_FILE_PATH)
        if (file.exists()) {
            ObjectInputStream(file.inputStream()).use {
                while (true) {
                    try {
                        val key = it.readObject() as String
                        val value = it.readObject() as Any
                        dataMap[key] = value
                    } catch (e: EOFException) {
                        break
                    }
                }
            }
        }

        val expireFile = File(EXPIRE_FILE_PATH)
        if (expireFile.exists()) {
            ObjectInputStream(expireFile.inputStream()).use {
                while (true) {
                    try {
                        val key = it.readObject() as String
                        val value = it.readObject() as Long
                        expireMap[key] = value
                    } catch (e: EOFException) {
                        break
                    }
                }
            }
        }
    }

    override fun onApplicationEvent(event: ContextClosedEvent) {
        val dataFile = File(DATA_FILE_PATH)
        ObjectOutputStream(dataFile.outputStream()).use {
            dataMap.forEach { (t, u) ->
                it.writeObject(t)
                it.writeObject(u)
            }
        }

        val expireFile = File(EXPIRE_FILE_PATH)
        ObjectOutputStream(expireFile.outputStream()).use {
            expireMap.forEach { (t, u) ->
                it.writeObject(t)
                it.writeObject(u)
            }
        }
    }

}

相关文章

  • iOS本地数据持久化

    iOS本地数据持久化 iOS本地数据持久化

  • iOS本地数据持久化

    转载自:CocoaChina - iOS本地数据持久化 本文内容:iOS本地数据持久化的几种类型iOS本地数据持久...

  • iOS本地数据持久化

    本文内容: iOS本地数据持久化的几种类型 iOS本地数据持久化几种类型的应用场景及使用 一.iOS本地数据持久化...

  • iOS本地数据持久化

    本文内容:iOS本地数据持久化的几种类型iOS本地数据持久化几种类型的应用场景及使用 一,iOS本地数据持久化的类...

  • ios数据持久化

    本文内容:iOS本地数据持久化的几种类型iOS本地数据持久化几种类型的应用场景及使用 一.iOS本地数据持久化的类...

  • iOS 数据持久化

    iOS本地数据持久化 本文内容:iOS本地数据持久化的几种类型iOS本地数据持久化几种类型的应用场景及使用 一.i...

  • iOS 本地存储, 无需再写SQL语句 <封装 FMDB&

    iOS,本地存储 SwpFMDB iOS本地持久化储存方式 iOS本地持久化储存方式,常用几种方式: NSUser...

  • RocketMQ源代码笔记(一):文件存储

    0.前言 RMQ对于消息持久化的方式是顺序写到本地磁盘文件,相对于持久化到远程的数据库或者KV来说,往本地磁盘文件...

  • iOS数据本地持久化方法

    plist文件(序列化)plist文件(属性列表) preference(偏好设置) NSKeyedArchive...

  • AsyncStorage尝试

    AsyncStorage中文使用文档 保存数据到本地 在开发中我们经常会碰到保存数据到本地,进行持久化.使用Asy...

网友评论

      本文标题:SaToken 持久化到本地的方法

      本文链接:https://www.haomeiwen.com/subject/qguvgdtx.html