• springboot项目配置拦截器


    配置拦截器

    @Configuration
    public class InterceptorConfig implements WebMvcConfigurer {
    
        @Autowired
        private ResponseInteceptor appInteceptor;
     
        @Autowired
        private PersonInterceptorConfig personInteceptor;
        /**
         * 拦截器,在这里加拦截路径
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            System.out.println("加载 InterceptorConfig...");
            // 全局拦截器
            registry.addInterceptor(appInteceptor).addPathPatterns("/**");
            //个人端登录页面拦截器,拦截特定的请求
            registry.addInterceptor(personInteceptor).addPathPatterns("/**/person/**");
            System.out.println("已开启拦截器!");
        }
    }
    

      处理拦截页面

    @Component
    public class PersonInterceptorConfig extends HandlerInterceptorAdapter {
    
    	@Resource
    	private RedisCache<Object> redisCache;
    
    	// 在控制器执行前调用
    	@Override
    	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    			throws Exception {
    
    		// 获取当前登录账户信息
    		String struuid = null;
    		Cookie[] cookies = request.getCookies();
    		for (Cookie cookie : cookies) {
    			if (cookie.getName().equalsIgnoreCase(Constants.CookieKey)) {
    				struuid = cookie.getValue();
    			}
    		}
    
    		if (struuid == null) {
    			System.out.println("验证不通过");
    			return false;
    		}
    		String userName = redisCache.get(struuid).toString();
    		if (userName == null) {
    			System.out.println("验证不通过");
    			return false;
    		} else {
    			System.out.println("***********************************************");
    			return true;
    		}
    	}
    
    	@Override
    	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
    			ModelAndView modelAndView) throws Exception {
    		super.postHandle(request, response, handler, modelAndView);
    	}
    
    	// 在后端控制器执行后调用
    	@Override
    	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
    			throws Exception {
    		super.afterCompletion(request, response, handler, ex);
    	}
    }
    

      

    public interface Constants {
    	 //自定义cookie的key
    	 static String CookieKey="userid";
    	 static String RedisUserKey="userid";
    	}
    

      登录页面处理

    @Resource
    	private RedisCache<Object> redisCache;
    	
    	/**
    	 * 个人端登录页面
    	 * 
    	 * @param 
    	 */
    	@RequestMapping(value = "/personLoginById", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    	public JSONResponse personLoginById(@PathVariable("name") String name,@PathVariable("id") String id,
    			HttpServletRequest request,HttpServletResponse response) {
    		try {
    			// @PathVariable("code") String code,@PathVariable("phoneCode") String phoneCode,
    			String uuid = UUIDUtils.getUUID();
    			//Map<String,Object> map = new HashMap<String,Object>();
    		    Cookie cookie = new Cookie(Constants.CookieKey, uuid);
    		    response.addCookie(cookie);//返回客户端
    			redisCache.set(uuid, name);
    			return ResultUtil.success();
    		} catch (Exception e) {
    			logger.error(e.getMessage());
    			return ResultUtil.error(e.getMessage());
    		}
    	}
    
    redisCache类
    public class RedisCache<T> {
    
    	private final Logger logger = LoggerFactory.getLogger(getClass());
    	
    	@Autowired
    	private RedisTemplate<String, T> redisTemplate;
    
    	public static final String KEY_SET_PREFIX = "_set:";
    	public static final String KEY_LIST_PREFIX = "_list:";
    
    	public T get(String key) {
    		logger.debug("get key [{}]", key);
    		try {
    			if (key == null) {
    				return null;
    			}
    			else {
    				return redisTemplate.opsForValue().get(key);
    			}
    		}
    		catch (Throwable t) {
    			logger.error("get key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    
    	}
    
    	public T set(String key, T value) {
    		logger.debug("set key [{}]", key);
    		try {
    			redisTemplate.opsForValue().set(key, value);
    			return value;
    		}
    		catch (Throwable t) {
    			logger.error("set key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public T set(String key, T value, long timeout) {
    		logger.debug("set key [{}]", key);
    		try {
    			redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
    			return value;
    		}
    		catch (Throwable t) {
    			logger.error("set key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public void delete(String key) {
    		logger.debug("delete key [{}]", key);
    		try {
    			redisTemplate.delete(key);
    		}
    		catch (Throwable t) {
    			logger.error("delete key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	@SuppressWarnings("unchecked")
    	public void setSet(String k, T value, long time) {
    		String key = KEY_SET_PREFIX + k;
    		logger.debug("setSet key [{}]", key);
    		try {
    			SetOperations<String, T> valueOps = redisTemplate.opsForSet();
    			valueOps.add(key, value);
    			if (time > 0)
    				redisTemplate.expire(key, time, TimeUnit.SECONDS);
    		}
    		catch (Throwable t) {
    			logger.error("setSet key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public void setSet(String k, T value) {
    		setSet(k, value, -1);
    	}
    
    	@SuppressWarnings("unchecked")
    	public void setSet(String k, Set<T> v, long time) {
    		String key = KEY_SET_PREFIX + k;
    		logger.debug("setSet key [{}]", key);
    		try {
    			SetOperations<String, T> setOps = redisTemplate.opsForSet();
    			setOps.add(key, (T[]) v.toArray());
    			if (time > 0)
    				redisTemplate.expire(key, time, TimeUnit.SECONDS);
    		}
    		catch (Throwable t) {
    			logger.error("setSet key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public void setSet(String k, Set<T> v) {
    		setSet(k, v, -1);
    	}
    
    	public Set<T> getSet(String k) {
    		String key = KEY_SET_PREFIX + k;
    		logger.debug("getSet key [{}]", key);
    		try {
    			SetOperations<String, T> setOps = redisTemplate.opsForSet();
    			return setOps.members(key);
    		}
    		catch (Throwable t) {
    			logger.error("getSet key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public void setList(String k, T v, long time) {
    		String key = KEY_LIST_PREFIX + k;
    		logger.debug("setList key [{}]", key);
    		try {
    			ListOperations<String, T> listOps = redisTemplate.opsForList();
    			listOps.rightPush(key, v);
    			if (time > 0)
    				redisTemplate.expire(key, time, TimeUnit.SECONDS);
    		}
    		catch (Throwable t) {
    			logger.error("setList key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public void setList(String k, List<T> v, long time) {
    		String key = KEY_LIST_PREFIX + k;
    		logger.debug("setList key [{}]", key);
    		try {
    			ListOperations<String, T> listOps = redisTemplate.opsForList();
    			listOps.rightPushAll(key, v);
    			if (time > 0)
    				redisTemplate.expire(key, time, TimeUnit.SECONDS);
    		}
    		catch (Throwable t) {
    			logger.error("setList key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public void setList(String k, List<T> v) {
    		setList(k, v, -1);
    	}
    
    	public List<T> getList(String k, long start, long end) {
    		String key = KEY_LIST_PREFIX + k;
    		logger.debug("setList key [{}]", key);
    		try {
    			ListOperations<String, T> listOps = redisTemplate.opsForList();
    			return listOps.range(key, start, end);
    		}
    		catch (Throwable t) {
    			logger.error("getList key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public long getListSize(String k) {
    		String key = KEY_LIST_PREFIX + k;
    		logger.debug("setList key [{}]", key);
    		try {
    			ListOperations<String, T> listOps = redisTemplate.opsForList();
    			return listOps.size(key);
    		}
    		catch (Throwable t) {
    			logger.error("getListSize key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public long getListSize(ListOperations<String, String> listOps, String k) {
    		String key = KEY_LIST_PREFIX + k;
    		logger.debug("getListSize key [{}]", key);
    		try {
    			return listOps.size(key);
    		}
    		catch (Throwable t) {
    			logger.error("getListSize key [{}] exception!", key, t);
    			throw new CacheException(t);
    		}
    	}
    
    	public void setMap(String key, String mapkey, T mapValue) {
    		HashOperations<String, String, T> hashOperations = redisTemplate.opsForHash();
    		hashOperations.putIfAbsent(key, mapkey, mapValue);
    	}
    
    	public void deleteMap(String key, String mapkey) {
    		HashOperations<String, String, T> hashOperations = redisTemplate.opsForHash();
    		hashOperations.delete(key, mapkey);
    	}
    
    	public T getMap(String key, String mapkey) {
    		HashOperations<String, String, T> hashOperations = redisTemplate.opsForHash();
    		return hashOperations.get(key, mapkey);
    	}
    
    	public List<T> getMapValues(String key) {
    		HashOperations<String, String, T> hashOperations = redisTemplate.opsForHash();
    		return hashOperations.values(key);
    	}
    
    	public void setRedisTemplate(RedisTemplate<String, T> redisTemplate) {
    		this.redisTemplate = redisTemplate;
    	}
    }
    

      

    如果你不知道自己要去哪里,那么去哪里都是一样
  • 相关阅读:
    css常用格式
    css选择器
    D1-mini esp8266的资料备份
    总结esp8266刷Python的完整的步骤(终极总结)
    用Python利用pyFirmata控制Arduino实现Blink
    microPython 的逗比报错的问题
    python+opencv+Face++实现人脸识别比对
    TypeError: slice indices must be integers or None or have an __index__ method
    opencv识别验证码的教程和资料
    校园网一键登录后台
  • 原文地址:https://www.cnblogs.com/dragonKings/p/12021439.html
Copyright © 2020-2023  润新知