SpringMVC註解實現登入驗證
攔截器抽象類繼承spring的HandlerInterceptorAdapter
package com.hsr.component.auth; import com.hsr.core.annotations.AuthAdmin; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public abstract class AuthAdminInterceptorDefault extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //認證使用者 if(handler == null || !handler.getClass().isAssignableFrom(HandlerMethod.class)){ return true; } HandlerMethod handlerMethod = (HandlerMethod) handler; Class beanType = handlerMethod.getBeanType(); AuthAdmin classLevelAuthAnnotation = null; AuthAdmin methodLevelAuthAnnotation = null; if(beanType != null){ classLevelAuthAnnotation = (AuthAdmin) beanType.getAnnotation(AuthAdmin.class); } methodLevelAuthAnnotation = handlerMethod.getMethodAnnotation(AuthAdmin.class); //先判斷方法級別的限制 if(methodLevelAuthAnnotation != null){ if(methodLevelAuthAnnotation.validate() == false){ return true; } else{ return _validateUser(request, response); } } //如果方法級別沒有註解在判斷類級別的 if(classLevelAuthAnnotation != null){ if(classLevelAuthAnnotation.validate() == false){ return true; } else{ return _validateUser(request, response); } } return true; } private boolean _validateUser(HttpServletRequest request,HttpServletResponse response) throws IOException { //所有的請求都是要進行登陸認的 Object obj = ensureCurrentUser(request,response); if(obj == null){ //判斷請求是否是ajax請求 String requestType = request.getHeader("X-Requested-With"); if(requestType != null && !"".equals(requestType.trim())){ if("XMLHttpRequest".toUpperCase().equals(requestType.toUpperCase())){ //getOutputStream與getWriter呼叫的問題 if(!response.isCommitted()) { response.reset(); } //告訴瀏覽器用UTF-8的編碼格式 response.setHeader("Content-type", "application/html;charset=UTF-8"); //是告訴servlet用UTF-8轉碼 response.setCharacterEncoding("UTF-8"); response.getWriter().write("LOGIN_TIME_OUT"); } } else{ response.sendRedirect(ensureRedirectLoginUrl(request,response)); } return false; }else{ return true; } } protected abstract Object ensureCurrentUser(HttpServletRequest request,HttpServletResponse response); protected abstract String ensureRedirectLoginUrl(HttpServletRequest request,HttpServletResponse response); }
註解程式碼package com.edu.admin.base; import com.hsr.component.auth.AuthAdminInterceptorDefault; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AdminAuth extends AuthAdminInterceptorDefault { @Override protected Object ensureCurrentUser(HttpServletRequest request, HttpServletResponse response) { return AdminUtil.getCurrentUser(); } @Override protected String ensureRedirectLoginUrl(HttpServletRequest request, HttpServletResponse response) { return "login"; } }
package com.hsr.core.annotations;
import java.lang.annotation.*;
/**
認證管理端使用者
*/
@Documented
@Inherited
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthAdmin {
boolean validate() default true;
}
springmvc的xml檔案配置
然後在需要驗證登入的controller上使用註解就行了<mvc:interceptors> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/> <mvc:interceptor> <mvc:mapping path="/admin/**"/> <bean class="com.edu.admin.base.AdminAuth"/> </mvc:interceptor> </mvc:interceptors>
相關推薦
SpringMVC註解實現登入驗證
攔截器抽象類繼承spring的HandlerInterceptorAdapter package com.hsr.component.auth; import com.hsr.core.annotations.AuthAdmin; import org.springfra
SpringMVC攔截器實現登入驗證
Spring攔截器說明: 攔截器通過統一攔截從瀏覽器發往伺服器的請求,進行相應的處理,完成功能增強 SpringMVC攔截器是可插拔式設計,使用時,直接在配置檔案中應用該攔截器即可 使用場景:解
spring security實現登入驗證以及根據使用者身份跳轉不同頁面
想關依賴,採用session加redis儲存使用者資訊 <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security
使用自定義註解實現登入使用者獲取
業務功能場景 在程式碼程式中很多介面的呼叫會有限制,需要使用者在登入狀態下才能進行操作(需要眾多使用者的資訊等),這裡就使用註解在呼叫介面的時候進行驗證攔截。 自定義一個註解 package com.timothy.annotation; import jav
前端js實現--登入驗證二維碼
數字和字母組合的四位驗證碼 HTML如下 <li class="border testcode"> &l
springboot+ajax實現登入驗證
1.基本思路: 前臺登入頁面form表單,用jquery設定表單提交按鈕點選事件,不考慮其他情況,理想化使用者已經輸入了使用者名稱和密碼,然後點選提交,然後呼叫ajax向後臺傳入json資料,後臺將json轉化為使用者自己設定的實體類,然後呼叫後臺函式判斷使用
【Django】Python 實現登入驗證碼
1 安裝 pillow 包,用於生成驗證碼圖片 程式碼檔案 verification.py #!/usr/bin/python # -*- coding: utf-8 -*- import random from PIL import Image, ImageDraw, Image
JSONP跨域訪問實現登入驗證
最近在做一個手機Web專案,硬著頭皮上了。現在比較流行的就是使用Phonegap+HTML5+CSS+JS/JQuery做一個看起來native的mobile web app。但是由於時間急,而且這些東西都不是很熟悉,再加上這只是對已有web網站的mobile化,因此採用
ssm配置完成shiro,實現登入驗證的功能
花了一天時間,算是完成了shiro登入驗證的這一基本功能。 https://www.w3cschool.cn/shiro/andc1if0.html 這個教程可以多看看,核心的基礎功能很重要。 實現shiro 第一步,引入所需要的依賴 在pom.xml檔案中加入 &
JavaWeb實現登入驗證碼
在登入介面中使用圖片驗證碼, 對於現在的web應用到處可見. 話不多說, 開始寫程式碼了! 首先, 新建一個JSP, 表示登入介面: login3.jsp檔案: <%-- User: menglanyingfei Date: 2018/
python實現登入驗證系統(搭建MVC框架)
小型登入註冊驗證系統 一、概述 使用Redis+MySQL資料庫實現一個小型的登入註冊驗證系統。在這個系統中初步瞭解認識MVC框架。 具備功能:登入、註冊、改密、登出。 資料庫:Redis,MySQL。使用Redis把使用者資
(一)如何使用Spring-security來實現登入驗證功能(XML配置方式)?
先從使用xml的方式來實現使用者的許可權登入 (1)需要在maven工程中加上關於spring-secutity的jar包的依賴 //spring-securityd 有關的依賴 <
java 連結資料庫實現登入驗證
因為當初比較抵觸框架,so放棄後端開發選擇了前端開發,筆記一直有保留,不是因為什麼,只是因為自己做過,曾經經歷過,也許哪一天我又重拾了呢,這都是未知數…… package example; impor
使用Ajax實現登入驗證
get提交方式: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=utf-8"%> <!DOCTYPE
Django實現登入驗證功能
Django實現登入驗證功能Django實現登入驗證功能:Django對使用者登入功能已經進行了封裝,我們只需要簡單地修改就可以了。 檢視:views.py # Create your views
spring mvc+spring+mybatis+ajax實現登入驗證
<h1>Spring Mvc+Spring+Mybatis+Ajax 實現非同步登入的例子,和大家分享一下。</h1><div>login.js程式碼:</div><pre name="code" class="javas
react通過react-router-dom攔截實現登入驗證
在使用react開發專案中,有些頁面需要登入之後才能訪問,所以需要進行攔截,此處分享採用react-router-dom v4+redux+redux-saga+ant-mobile+axios技術來實現 Login.jsx import React from "reac
Android客戶端與Tomcat伺服器通訊實現登入驗證
一.功能描述 在Android客戶端實現登入介面,當將使用者名稱和密碼填入文字框並點選登入按鈕時,將認證資訊傳送至Tomcat伺服器進行認證,若使用者名稱和密碼匹配,則Android客戶端提示登入成功,否則提示登陸失敗。 二.開發環境 Android客戶端:Andro
springMVC 註解實現例項 springMVC+ajax
springMVC註解版本的工程搭建,web工程名字為:springMVC-study 1、首先在web.xml中加入springMVC的前端過濾器,DispatcherServlet.這裡的servlet-name就規定了springmvc的配置檔名字為springmvc
springMvc的安全登入驗證
1. 引入springMvc許可權框架security 1-1 配置web.xml 1. 在監聽器上引入許可權局框架的配置檔案security.xml <!--監聽器--> <listener> <li