yanzhenjie / AndServer

:cherries: Web server and web framework of Android platform.
https://yanzhenjie.com/AndServer
Apache License 2.0
3.71k stars 746 forks source link

请问StandardRequest中的getValidSession()方法是否写错了,session有效的情况下,需要创建一个新的session来返回吗? #505

Open zhangjibiao opened 1 year ago

zhangjibiao commented 1 year ago

源码

    public Session getValidSession() {
        Session session = getSession();
        if (session == null) {
            session = mSessionManager.createSession();
        } else if (session.isValid()) {
            session = mSessionManager.createSession();
        }

        setAttribute(REQUEST_CREATED_SESSION, session);
        return session;
    }

中,else if (session.isValid()) 是session有效的情况下,创建了一个新的session来返回,不应该是在session无效的情况下创建一个吗?

yanzhenjie commented 1 year ago

好像是有点问题啊,等我详细看看当时为什么这么写。

yanzhenjie commented 1 year ago

好像是有点问题啊,等我详细看看当时为什么这么写。

zhangjibiao commented 1 year ago

好像是有点问题啊,等我详细看看当时为什么这么写。

好的,谢谢啦

zhangjibiao commented 1 year ago

现在会出现一种情况,只要调用这个api,要么返回一个新的session对象,要么返回一个过期的session对象。 servelet的HttpServletRequest.getSession()方法,在session有效的情况下,是会返回已有的session对象的