首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Play Framework中存储cookie?

如何在Play Framework中存储cookie?
EN

Stack Overflow用户
提问于 2011-02-16 08:34:08
回答 3查看 16.4K关注 0票数 14

我想用Play Framework存储一个身份验证令牌,这个令牌可以持续几天甚至几周的时间,这样用户就不必每次都登录了。

推荐的方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-16 18:58:43

response对象有一个setCookie方法,它可以执行您想要的操作

代码语言:javascript
复制
response.setCookie("playlonglivecookie", yourData, "14d");

请记住,cookie中存储的数据未加密,因此如果您想对其进行加密,请使用Crypto.sign方法。它使用play框架密钥对您的代码进行签名。

http://www.playframework.org/documentation/api/1.1.1/play/mvc/Http.Response.html#setCookie(java.lang.String,%20java.lang.String)

票数 20
EN

Stack Overflow用户

发布于 2011-02-16 18:50:16

我还建议您查看play-1.x/modules/secure中提供的安全模块和文件Secure.java...它在登录表单中提供了一个“记住我”复选框,可以让你永远保持登录状态。

以及该函数的代码(特别是末尾的response.setCookie ):

代码语言:javascript
复制
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

票数 7
EN

Stack Overflow用户

发布于 2011-02-16 17:20:20

response-object有一些方法可以帮助你。参见javadoc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5011201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档