Session Serializers

预计阅读时间:1分钟

Serializers

您可以使用以下命令指定自定义序列化程序:

application.install(Sessions) {
    cookie<MySession>("SESSION") {
        serializer = MyCustomSerializer()
    }
} 

如果不指定任何序列化程序,它将使用内部优化格式的序列化程序.

SessionSerializerReflection

当未指定序列化程序时,这是默认的序列化程序:

cookie<MySession>("SESSION") {
    serializer = autoSerializerOf()
}

Custom serializers

Sessions API提供了一个SessionSerializer接口,如下所示:

interface SessionSerializer {
    fun serialize(session: Any): String
    fun deserialize(text: String): Any
}

该接口用于通用序列化程序,您可以像这样安装它:

cookie<MySession>("NAME") {
    serializer = MyCustomSerializer()
}

因此,例如,您可以使用Gson创建JSON会话序列化程序:

class GsonSessionSerializer(
    val type: java.lang.reflect.Type, val gson: Gson = Gson(), configure: Gson.() -> Unit = {}
) : SessionSerializer {
    init {
        configure(gson)
    }

    override fun serialize(session: Any): String = gson.toJson(session)
    override fun deserialize(text: String): Any = gson.fromJson(text, type)
}

并配置它:

cookie<MySession>("NAME") {
    serializer = GsonSessionSerializer(MySession::class.java)
}

by  ICOPY.SITE