Shiro 登录、退出、校验是否登录涉及到的Session和Cookie
前提
我們的使用的是DefaultWebSessionManager而不是ServletContainerSessionManager。這就意味著前者的session為Shiro的,后者的session為Tomcat的。
登錄
DefaultWebSessionManager調(diào)用start()方法(在AbstractNativeSessionManager中)創(chuàng)建Session(SimpleSession),創(chuàng)建過程中會將Session放到介質(zhì)(Redis)中,再調(diào)用onStart()方法將sessionId放入到瀏覽器的Cookie中。
我們已經(jīng)拿到Session(SimpleSession)了可以將用戶相關(guān)信息放到其中:session.setAttribute("userName", userName);,這個過程是放到了SimpleSession的一個Map屬性中,同時更新介質(zhì)中的SimpleSession。
退出
DefaultWebSessionManager調(diào)用stop(SessionKey key)方法(在AbstractNativeSessionManager中),SimpleSession設(shè)置停止時間戳,再調(diào)用onStop()方法設(shè)置最后訪問時間戳并更新介質(zhì)中的session,清除瀏覽器中關(guān)于session的Cookie。
校驗是否登錄
我們可以通過Session是否存在并且session中的用戶信息是否存在來判斷或者是Cookie是否存在或者是Subject.isAuthenticated()是否為false,有其一不成立就執(zhí)行退出操作。
轉(zhuǎn)載于:https://www.cnblogs.com/BINGJJFLY/p/9525526.html
總結(jié)
以上是生活随笔為你收集整理的Shiro 登录、退出、校验是否登录涉及到的Session和Cookie的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浦发美运新贵白金卡怎么样?丰富权益看这里
- 下一篇: Http的持久连接和管线化