繁体   English   中英

如何在Play Framework中存储cookie?

[英]How do I store a cookie in Play Framework?

我想在Play Framework中存储一个比当前会话更长的身份验证令牌,可能持续数天甚至数周 - 这样用户就不必每次都登录。

建议的方法是什么?

响应对象有一个方法setCookie,它完全符合您的要求

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)

我还建议你看一下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.5,不推荐使用setCookie

你可以改用:

Http.Response.setCookie(Http.Cookie cookie)

您可以使用构建器创建新cookie:

Http.Cookie.builder("name", "value").withMaxAge(15).build();

15天是到期日

参考: https//www.playframework.com/documentation/2.5.x/api/java/play/mvc/Http.Response.html#setCookie-play.mvc.Http.Cookie-

示例: https//github.com/playframework/playframework/blob/master/framework/src/play/src/test/java/play/mvc/CookieBuilderTest.java

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM