0

我正在使用 play 1.2.7 创建登录和注销功能,当用户登录时,我将为他创建会话,通过使用会话对象,我的问题是一旦我完成注销将重定向到登录页面但是当用户单击浏览器返回按钮页面将被刷新并再次登录

这是我登录用户时的代码。

public static void login() throws Throwable {
        Http.Cookie remember = request.cookies.get("rememberme");
        if(remember != null) {
            int firstIndex = remember.value.indexOf("-");
            int lastIndex = remember.value.lastIndexOf("-");
            if (lastIndex > firstIndex) {
                String sign = remember.value.substring(0, firstIndex);
                String restOfCookie = remember.value.substring(firstIndex + 1);
                String username = remember.value.substring(firstIndex + 1, lastIndex);
                String time = remember.value.substring(lastIndex + 1);
                Date expirationDate = new Date(Long.parseLong(time)); // surround with try/catch?
                Date now = new Date();
                if (expirationDate == null || expirationDate.before(now)) {
                    logout();
                }
                if(Crypto.sign(restOfCookie).equals(sign)) {
                    session.put("username", username);
                    redirectToOriginalURL();
                }
            }
        }
        flash.keep("url");
        render();
    }

这是用户注销时我的注销代码:

 public static void logout() throws Throwable {
        Security.invoke("onDisconnect");
        session.clear();
        response.removeCookie("rememberme");
        Security.invoke("onDisconnected");
        flash.success("secure.logout");
        login();
    }

请从这个问题中拯救我如何解决这个问题。在此先感谢。

4

1 回答 1

1

使用安全模块是要走的路:http ://www.playframework.com/documentation/1.2/secure 。

仅供参考,有些模块扩展了安全模块并支持基于角色的授权:

于 2013-11-07T11:32:11.690 回答