【发布时间】:2017-12-10 16:56:08
【问题描述】:
我得到了一个看起来像这样的 Android Room 实体。到目前为止,不用担心。
@Entity(tableName = "users",
indices = arrayOf(Index(value = "nickName", unique = true)))
data class User(@ColumnInfo(name = "nickName") var nickName: String,
@ColumnInfo(name = "password") var password: String) {
@ColumnInfo(name = "id")
@PrimaryKey(autoGenerate = true)
var id: Long = 0
}
现在我需要加密密码。使用 Java,只需使用 setter 即可完成此操作。
您将如何使用 Kotlin 来做到这一点。我找不到将 Android Room、自定义设置器和数据类结合起来的解决方案。
【问题讨论】:
-
为什么不能覆盖值的设置器?
-
您的问题不清楚。 “使用 Java,只需使用 setter 即可完成此操作,这样就可以了。” - Kotlin 的可变属性有什么问题?
-
@Egor 你如何为数据类做到这一点?通过私人
_password字段?在这种情况下,你在哪里连接@ColumnInfo? -
@VincentMimoun-Prat 我想从设计的角度来看,在 setter 方法中编码密码不是正确的方法,只需在外部编码然后传递给模型
-
您可能有兴趣知道最佳做法是不存储密码,而是存储密码的盐和散列。例如见jasypt.org/howtoencryptuserpasswords.html。
标签: android kotlin android-room