Java Web檢查用戶登錄狀態(tài)(防止用戶訪問到非法頁面)
更新時(shí)間:2023年09月01日 16:27:13 作者:Katniss的名字被占用
一般javaweb網(wǎng)站都有用戶登錄,而有一些操作必須用戶登錄才能進(jìn)行,本文主要介紹了Java Web檢查用戶登錄狀態(tài),具有一定的參考價(jià)值,感興趣的可以了解一下
使用攔截器
- 在方法前標(biāo)注自定義注解
- 攔截所有請求,只處理帶有該注解的方法
自定義注解:
- 常用元注解:
@Target
,@Rentention
,@Document
,@Inherited
- 如何讀取注解:
-Method.getDeclaredAnnotations()
-Method.getAnnotaion(Class<T> annotationClass)
業(yè)務(wù)場景:未登陸狀態(tài)下,用戶不能訪問需要登陸才能訪問的頁面,例如修改個人信息頁面等。
1. 自定義注解
package com.nowcoder.community.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface LoginRequired { }
2. 在方法前加上該注解
@LoginRequired @RequestMapping(path = "/setting",method = RequestMethod.GET) public String getSettingPage(){ return "/site/setting"; }
3. 定義攔截器
package com.nowcoder.community.controller.Interceptor; import com.nowcoder.community.annotation.LoginRequired; import com.nowcoder.community.entity.User; import com.nowcoder.community.util.HostHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; @Component public class LoginRequireInterception implements HandlerInterceptor { @Autowired private HostHolder hostHolder; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(handler instanceof HandlerMethod) { // 攔截到類型為方法 HandlerMethod handlerMethod = (HandlerMethod) handler; Method method = handlerMethod.getMethod(); // 獲取方法 LoginRequired loginRequired = method.getAnnotation(LoginRequired.class); // 獲取方法的注解 if (loginRequired != null && hostHolder.getUser() == null) { // 方法是loginRequired且user沒登陸,需要攔截 response.sendRedirect(request.getContextPath() + "/login"); return false; } } return true; } }
4. 配置攔截器
package com.nowcoder.community.config; import com.nowcoder.community.controller.Interceptor.AlphaInterceptor; import com.nowcoder.community.controller.Interceptor.LoginRequireInterception; import com.nowcoder.community.controller.Interceptor.LoginTicketInterceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private AlphaInterceptor alphaInterceptor; @Autowired private LoginTicketInterceptor loginTicketInterceptor; @Autowired private LoginRequireInterception loginRequireInterception; @Override public void addInterceptors(InterceptorRegistry registry) { // 通過重寫addInterceptors()方法,可以配置攔截器,對請求進(jìn)行預(yù)處理或后處理。 registry.addInterceptor(loginRequireInterception) .excludePathPatterns("/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", "/**/*.jpeg"); } }
到此這篇關(guān)于Java Web檢查用戶登錄狀態(tài)(防止用戶訪問到非法頁面)的文章就介紹到這了,更多相關(guān)Java 檢查用戶登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關(guān)文章
Spring中實(shí)現(xiàn)定時(shí)調(diào)度的幾種方法
本篇文章主要介紹了Spring中實(shí)現(xiàn)定時(shí)調(diào)度示例,可以在無人值守的時(shí)候系統(tǒng)可以在某一時(shí)刻執(zhí)行某些特定的功能,有興趣的可以了解一下。2017-02-02Java中final,finally,finalize?有什么區(qū)別
這篇文章主要給大家分享的是?Java中final,finally,finalize?到底有什么區(qū)別,文章圍繞final,finally,finalize的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考的價(jià)值,需要的朋友可以參考一下2021-11-11Java 實(shí)現(xiàn)LZ78壓縮算法的示例代碼
這篇文章主要介紹了Java 實(shí)現(xiàn)LZ78壓縮算法的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05mybatis-config.xml文件中的mappers標(biāo)簽使用
在MyBatis配置中,<mapper>標(biāo)簽關(guān)鍵用于指定SQL?Mapper的XML文件路徑,主要有三種指定方式:resource、url和class,Resource方式從類的根路徑開始,適合放在項(xiàng)目內(nèi)部保障移植性,URL方式指定絕對路徑,移植性差,適用于外部路徑2024-10-10