我想用Play Framework存储一个身份验证令牌,这个令牌可以持续几天甚至几周的时间,这样用户就不必每次都登录了。
推荐的方法是什么?
发布于 2011-02-16 18:58:43
response对象有一个setCookie方法,它可以执行您想要的操作
response.setCookie("playlonglivecookie", yourData, "14d");
请记住,cookie中存储的数据未加密,因此如果您想对其进行加密,请使用Crypto.sign
方法。它使用play框架密钥对您的代码进行签名。
发布于 2011-02-16 18:50:16
我还建议您查看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();
}
Pascal
发布于 2011-02-16 17:20:20
response-object有一些方法可以帮助你。参见javadoc。
https://stackoverflow.com/questions/5011201
复制相似问题