我希望使用Play Framework存储一个认证令牌,该认证令牌可能会持续数天甚至数周,从而使用户不必每次都登录。
建议的方法是什么?
答案 0 :(得分:21)
响应对象有一个方法setCookie,它完全符合您的要求
response.setCookie("playlonglivecookie", yourData, "14d");
请记住,存储在cookie中的数据未加密,因此如果要对其进行加密,请使用Crypto.sign
方法。使用play框架密钥对您的代码进行签名。
答案 1 :(得分:7)
我还建议你看一下play-1.x / modules / secure和Secure.java文件中提供的安全模块......它在登录表单中提供了一个“记住我”的复选框,允许让你永远记录下来。
和这个函数的代码(特别是最后的response.setCookie):
public static void authenticate(@Required String username, String password, boolean remember) throws Throwable {
// Check tokens
Boolean allowed = false;
try {
// This is the deprecated method name
allowed = (Boolean)Security.invoke("authentify", username, password);
} catch (UnsupportedOperationException e ) {
// This is the official method name
allowed = (Boolean)Security.invoke("authenticate", username, password);
}
if(validation.hasErrors() || !allowed) {
flash.keep("url");
flash.error("secure.error");
params.flash();
login();
}
// Mark user as connected
session.put("username", username);
// Remember if needed
if(remember) {
response.setCookie("rememberme", Crypto.sign(username) + "-" + username, "30d");
}
// Redirect to the original URL (or /)
redirectToOriginalURL();
}
帕斯卡
答案 2 :(得分:1)
玩游戏> 2.5 setCookie 已弃用。
你可以改用:
*Sum_Left_Elements* = 1 + 2 + 7 = 10
*Sum_right_Elements* = 8 + 2 = 10
您可以使用构建器创建新的Cookie:
Http.Response.setCookie(Http.Cookie cookie)
15天是到期日
答案 3 :(得分:0)
response-object有一些方法可以帮助你。请参阅javadoc。