首页>代码>Springboot开发的精简博客系统 >/noteblogv4-master/src/main/java/me/wuwenbin/noteblogv4/config/application/NBContext.java
package me.wuwenbin.noteblogv4.config.application;

import me.wuwenbin.noteblogv4.model.constant.NoteBlogV4;
import me.wuwenbin.noteblogv4.model.entity.permission.NBSysUser;
import me.wuwenbin.noteblogv4.util.CookieUtils;
import me.wuwenbin.noteblogv4.util.NBUtils;
import org.springframework.stereotype.Component;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 全局的上下文对象
 * 用于操作session和cookie
 * created by Wuwenbin on 2018/7/16 at 12:25
 *
 * @author wuwenbin
 */
@Component
public class NBContext extends ConcurrentHashMap<String, NBSession> {

    private static ConcurrentHashMap<String, Object> applicationContext = new ConcurrentHashMap<>(100);

    public void setSessionUser(HttpServletRequest request, HttpServletResponse response, NBSysUser sessionUser) {
        NBSession session = NBSession.builder()
                .sessionUser(sessionUser)
                .expired(false)
                .host(NBUtils.getRemoteAddress(request))
                .build();
        Cookie cookie = CookieUtils.getCookie(request, NoteBlogV4.Session.SESSION_ID_COOKIE);
        if (cookie != null) {
            session.setId(cookie.getValue());
        }
        CookieUtils.setCookie(response, NoteBlogV4.Session.SESSION_ID_COOKIE, session.getId(), -1);
        put(session.getId(), session);
    }

    public NBSysUser getSessionUser(String uuid) {
        Optional<NBSession> user = Optional.ofNullable(get(uuid));
        return user.map(NBSession::getSessionUser).orElse(null);
    }

    public void removeSessionUser(String uuid) {
        super.remove(uuid);
    }

    public void clearAll() {
        super.clear();
    }

    public void setApplicationObj(String key, Object value) {
        applicationContext.put(key, value);
    }

    public <T> T getApplicationObj(String key) {
        //noinspection unchecked
        return (T) applicationContext.get(key);
    }

    public void removeApplicationObj(String key) {
        applicationContext.remove(key);
    }

}
最近下载更多
qiangmin1223  LV12 前天
xiaokang1  LV10 4月23日
zhouenyi  LV6 3月14日
admin_z  LV22 2023年12月21日
WHY-small  LV15 2023年12月20日
fff2003  LV6 2023年12月20日
Rucoding  LV7 2023年10月31日
周敏国  LV9 2023年10月15日
qq573914838  LV5 2023年9月2日
taoshen95  LV14 2023年8月19日
最近浏览更多
qiangmin1223  LV12 前天
whb5566  LV10 前天
zolscy  LV12 4月23日
xiaokang1  LV10 4月23日
xiaozhi丶  LV14 4月22日
qwm374149  LV1 4月19日
akittyboy  LV9 4月16日
李二san  LV1 4月13日
lingtiejing  LV15 4月12日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友