几天前我开始学习 Android,到目前为止我已经完成了登录 Activity 的实现,主要 Activity 扩展了抽象的基本 Activity 。
点击导航栏项目时会从 Fragments 中打开 xml。
我对成功登录后收到的 token 有疑问。此 token 与每个请求一起使用,以在成功登录后获取数据。我应该将 token 安全地保存在 sqlite 数据库中,还是应该在主 Activity 中创建一个公共(public)属性? Main Activity 将始终保留在内存中,因为这将打开 fragment 。
最佳答案
我可以建议 3 个选项: 1) 您可以将 token 保存到文件中,如下所示:
public static void saveToken(Context ctx, String fileName, Object token) {
if (token == null) {
ctx.deleteFile(fileName);
} else {
ObjectOutputStream out = null;
try {
FileOutputStream fout = ctx.openFileOutput(fileName, 0);
out = new ObjectOutputStream(fout);
out.writeObject(token);
fout.getFD().sync();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null)
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
确保对象 token
实现了 java.io.Serializable 接口(interface)
。
API 级别 24 之前的用法:
saveToken(appContext, someFileName, someTokenObject);
API 级别 24 及更高级别的用法:
saveToken(appContext.createDeviceProtectedStorageContext(), someFileName, someTokenObject);
2) 使用SQLCipher库加密数据库。
3) 您可以使用 keystore 系统加密您的 token https://developer.android.com/training/articles/keystore.html
关于java - 我应该将 token 安全地保存在内存或 sqlite 中吗?或者请建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42922921/