基于session?Redis實(shí)現(xiàn)登錄
Redis實(shí)現(xiàn)登錄(基于session)

攔截器:實(shí)現(xiàn)多模塊用戶(hù)登錄的校驗(yàn)

代碼:
創(chuàng)建攔截器
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//1.獲取session
HttpSession session = request.getSession();
//2.獲取session中的用戶(hù)
Object user = session.getAttribute("user");
//3.判讀用戶(hù)是否存在
if (user == null) {
//不存在,攔截,返回401狀態(tài)碼
response.setStatus(401);
return false;
}
//5.存在,保存用戶(hù)信息到 ThreadLocal ThreadLocal 線(xiàn)程隔離
UserHolder.saveUser((UserDTO) user);
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
UserHolder.removeUser();
}
}WebMvcConfigurer配置接口是Spring內(nèi)部的一種配置方式,采用JavaBean的形式來(lái)代替?zhèn)鹘y(tǒng)的xml配置文件形式進(jìn)行針對(duì)框架個(gè)性化定制。接口提供了很多方法讓我們來(lái)定制SpringMVC的配置??梢杂脕?lái)自定義處理器、攔截器、視圖解析器、轉(zhuǎn)換器、設(shè)置跨域等。
- SpringBoot1.5版本前都是靠重寫(xiě)WebMvcConfigurerAdapter的方法來(lái)添加自定義攔截器,消息轉(zhuǎn)換器等。
- SpringBoot2.0版本后,WebMvcConfigurerAdapter類(lèi)被標(biāo)記為@Deprecated。推薦下面兩種方式:
- 實(shí)現(xiàn)WebMvcConfigurer接口(推薦);
- 繼承WebMvcConfigurationSupport類(lèi)。
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
//需要放行的路徑
.excludePathPatterns(
"/shop/**",
"/voucher/**",
"/shop-type/**",
"/upload/**",
"/blog/hot",
"/user/code",
"/user/login"
);
}
}集群的session共享問(wèn)題

session共享問(wèn)題:多臺(tái)Tomcat并不共享session存儲(chǔ)空間,當(dāng)請(qǐng)求切換到不同tomcat服務(wù)時(shí)導(dǎo)致數(shù)據(jù)丟失的問(wèn)題。
session的替代方案應(yīng)該滿(mǎn)足:
●數(shù)據(jù)共享
●內(nèi)存存儲(chǔ)
●key、value結(jié)構(gòu)
基于Redis實(shí)現(xiàn)session共享

到此這篇關(guān)于基于session Redis實(shí)現(xiàn)登錄的文章就介紹到這了,更多相關(guān)Redis實(shí)現(xiàn)登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解Redis開(kāi)啟遠(yuǎn)程登錄連接
- redis-cli 使用密碼登錄的實(shí)例
- 實(shí)例詳解Spring Boot實(shí)戰(zhàn)之Redis緩存登錄驗(yàn)證碼
- 詳解Redis使用認(rèn)證密碼登錄
- 基于springboot和redis實(shí)現(xiàn)單點(diǎn)登錄
- SpringBoot+Vue+Redis實(shí)現(xiàn)單點(diǎn)登錄(一處登錄另一處退出登錄)
- 使用redis管理用戶(hù)登錄會(huì)話(huà)的方法
- 基于Redis實(shí)現(xiàn)每日登錄失敗次數(shù)限制
- php+redis實(shí)現(xiàn)注冊(cè)、刪除、編輯、分頁(yè)、登錄、關(guān)注等功能示例
- springcloud微服務(wù)基于redis集群的單點(diǎn)登錄實(shí)現(xiàn)解析
相關(guān)文章
redis3.2配置文件redis.conf詳細(xì)說(shuō)明
redis3.2配置詳解,Redis啟動(dòng)的時(shí)候,可以指定配置文件,詳細(xì)說(shuō)明請(qǐng)看本文說(shuō)明2018-03-03
Redis+Hbase+RocketMQ?實(shí)際使用問(wèn)題案例講解
這篇文章主要介紹了Redis+Hbase+RocketMQ?實(shí)際使用問(wèn)題案例分享,本文結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2023-01-01
redis集群實(shí)現(xiàn)清理前綴相同的key
這篇文章主要介紹了redis集群實(shí)現(xiàn)清理前綴相同的key,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
關(guān)于在Redis中使用Pipelining加速查詢(xún)的問(wèn)題
這篇文章主要介紹了在Redis中使用Pipelining加速查詢(xún),Redis是一個(gè)client-server模式的TCP服務(wù),也被稱(chēng)為Request/Response協(xié)議的實(shí)現(xiàn),本文通過(guò)一個(gè)例子給大家詳細(xì)介紹,感興趣的朋友一起看看吧2022-05-05
單線(xiàn)程Redis快的4 個(gè)原因總結(jié)
作為內(nèi)存中數(shù)據(jù)存儲(chǔ),Redis 以其速度和性能著稱(chēng),通常被用作大多數(shù)后端服務(wù)的緩存解決方案,但是,在內(nèi)部,Redis 采用單線(xiàn)程架構(gòu),為什么單線(xiàn)程設(shè)計(jì)依然會(huì)有這么高的性能,在本文中,讓我們深入探討為什么 Redis 才有單線(xiàn)程架構(gòu)2023-07-07

