java 权限校验_Spring AOP实现功能权限校验功能的示例代码-程序员宅基地

技术标签: java 权限校验  

实现功能权限校验的功能有多种方法,其一使用拦截器拦截请求,其二是使用AOP抛异常。

首先用拦截器实现未登录时跳转到登录界面的功能。注意这里没有使用AOP切入,而是用拦截器拦截,因为AOP一般切入的是service层方法,而拦截器是拦截控制器层的请求,它本身也是一个处理器,可以直接中断请求的传递并返回视图,而AOP则不可以。

1.使用拦截器实现未登录时跳转到登录界面的功能

1.1 拦截器SecurityInterceptor

package com.jykj.demo.filter;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

import com.alibaba.fastjson.JSON;

import com.jykj.demo.util.Helper;

import com.jykj.demo.util.Result;

public class SecurityInterceptor implements HandlerInterceptor{

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

throws Exception {

System.out.println("SecurityInterceptor:"+request.getContextPath()+","+request.getRequestURI()+","+request.getMethod());

HttpSession session = request.getSession();

if (session.getAttribute(Helper.SESSION_USER) == null) {

System.out.println("AuthorizationException:未登录!"+request.getMethod());

if("POST".equalsIgnoreCase(request.getMethod())){

response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();

out.write(JSON.toJSONString(new Result(false,"未登录!")));

out.flush();

out.close();

}else{

response.sendRedirect(request.getContextPath()+"/login");

}

return false;

} else {

return true;

}

}

@Override

public voi

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30131443/article/details/114104216

智能推荐

Unity插件——Odin 学习笔记(一)_unity odin-程序员宅基地

文章浏览阅读2.6w次,点赞27次,收藏108次。本文章是为了记录学习Unity插件Odin,使用该插件可以让我们更快速便捷的开发Unity工具前言Unity原生编辑编辑器的方法有两种——IMGUI和新的UIElement1.UIElement我之前做过介绍,开发模式类似于HTML+CSS,如果有类似经验的人开发及相对容易,但是就目前而言不太适合编辑器开发,我觉得比较适合取代UGUI进行UI开发2.IMGUI入门比较简单,使用Edit..._unity odin

python 数据类型介绍_python中数据类型的作用-程序员宅基地

文章浏览阅读1.8k次。在 Python 中,数据类型是区分数据的种类和存储方式的标识符。它定义了数据的取值范围、占用空间大小、可操作特性等。Python 中常见的数据类型包括数字、字符串、列表、元组、集合和字典等。数据类型在编程中的作用主要有以下几个方面:不同的数据类型需要占用不同的内存空间,因此在内存空间的管理上,数据类型具有重要的作用。例如,在处理大量数据时,选择合适的数据类型可以有效地减少内存占用,提高程序的执行效率。数据类型定义了数据的表达方式和可操作性,使得程序能够对不同类型的数据进行有效的处理。_python中数据类型的作用

[kubernetes]-kubernetes使用nodeport暴露jacoco地址_kubernetes暴露jacoco端口-程序员宅基地

文章浏览阅读740次。测试环境 需要启动jacoco 并暴露端口 replicas为1 但是node为2个 没有指定pod在哪个节点上启动。因此打算用nodeport的方式暴露出来,这样认准一个node+nodeport就可以跑jacoco了haozhuo-health-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata:# deployment名字 和svc 和ingress绑定没关系 name: haozhuo-health-dp na_kubernetes暴露jacoco端口

SpringCloud整合项目Maven导入失败无法解析 org.springframework.cloud:spring-cloud-starter-XXXX:unknown_无法解析 org.springframework.cloud:spring-cloud-depend-程序员宅基地

文章浏览阅读1.6k次。springcloud maven导入失败_无法解析 org.springframework.cloud:spring-cloud-dependencies:pom:finchley.m8

PictureSelector 相册全白不显示问题,真服了_pictureselector.create 相册显示不出-程序员宅基地

文章浏览阅读566次。.load(url) .into(new ImageViewTarget<Bitmap>(imageView) { @Override public void onLoadStarted(@Nullable Drawable placeholder) { super.onLoadStarted(placeholder); ..._pictureselector.create 相册显示不出

Jupyter Notebook运行指定的conda虚拟环境_jupyter notebook使用conda-程序员宅基地

文章浏览阅读2w次,点赞25次,收藏93次。Jupyter Notebook是非常方便的Python IDE,安装anaconda后Jupyter NoteBook也会安装好,使用起来十分方便。当anaconda使用的多了之后,会有创建多个虚拟环境来兼容不同版本的python环境及安装包的需求,这时再使用Jupyter Notebook时就需要制定使用的虚拟环境的需求。其实使用虚拟环境非常简单,只需要安装一个nb_conda包就可以直接使..._jupyter notebook使用conda

随便推点

科研绘图学习笔记1_科研笔记1:科研绘图-程序员宅基地

文章浏览阅读182次。在选定对应的色轮配色方案后,我们可根据它提供的 HEX 颜色码或 R、G、B 值进行配色的拾取,从而完成插图颜色的选择。ColorBrewer 2.0 是一个专业的在线配色方案网站,它提供了大量的颜色搭配主题,这些主题是众多绘图工具(如 Matplotlib、ggplot2 等)内置的绘图颜色主题。要避免出现文字较少、图表较多的情况,即无须将原始数据和中间处理过程涉及的插图全部展示在论文中,而应在有复杂和多维数据的情况下,提高精选插图的能力,而非简单地堆砌插图。在科研论文配图绘制的过程中应用较少。_科研笔记1:科研绘图

2020年南大计算机、软件工程考研经验分享_南京大学考研压分吗-程序员宅基地

文章浏览阅读2.1w次,点赞40次,收藏150次。南大20计算机学院考研打算考南京大学通信的学弟学妹你们好,首先欢迎大家选择我们计算机学院,计算机学院是我们学校的王牌学院。为了帮大家更好的了解我们学院的情况以及如何准备考研,我将从以下两个方面来介绍,觉得我写的还尚可的话,可以给我手动点赞哈。(2020年南大计算机考研资料分享及经验交流群:645638416)1:学院报考情况由于2019年的南京大学考研的数据在2020年的9月份才会公布..._南京大学考研压分吗

LInux高级系统编程-4 信号-程序员宅基地

文章浏览阅读1.3k次,点赞34次,收藏21次。所需头文件函数//将set集合置空//将所有信号加入set集合//将signo信号加入到set 集合//从set集合中移除signo 信号//判断信号是否存在于 集合中。

C语言基础7函数基本用法_c语言函数-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏7次。C语言基础7函数基本用法_c语言函数

关于Redis的常识(推荐)-程序员宅基地

文章浏览阅读50次。原文出处:https://github.com/springside/springside4/wiki/redis版本:V3.0.3 2013-8-1 (@江南白衣版权所有,转载请保留出处)1. Overview1.1 资料<The Little Redis Book>,最好的入门小册子,可以先于一切文档之前看,免费。作者Antirez的博客,Antirez...

将图片快速转换为矢量地图-半自动地图矢量化工具raster_tracer的使用方法_qgis rastertracer-程序员宅基地

文章浏览阅读2.1k次。在QGIS中根据一幅jpeg格式的地图半自动化绘制矢量地图_qgis rastertracer

推荐文章

热门文章

相关标签