springAOP(Aspect)权限访问页面
1、XML进行配置切面
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="jurisdictionAdvice" class="com.wbg.sums.web.aspect.jurisdictionAdvice"/>
<aop:config>
<!--定义切面-->
<aop:aspect id="authAspect" ref="jurisdictionAdvice">
<!-- 定义切入点-->
<aop:pointcut id="jurisdictionPointCut" expression="
execution(* com.wbg.sums.web.*.deleteByPrimaryKey(..)) or
execution(* com.wbg.sums.web.*.updateByPrimaryKey(..))
"/>
<!--方法环绕-->
<aop:around method="readOnly" pointcut-ref="jurisdictionPointCut"/>
</aop:aspect>
</aop:config>
</beans>

2、定义切面和切点
package com.wbg.sums.web.aspect; import com.wbg.sums.dto.Result;
import com.wbg.sums.entity.Jurisdiction;
import com.wbg.sums.service.JurisdictionService;
import com.wbg.sums.service.MemberInformationService;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpSession; @Component
@Aspect
@EnableAspectJAutoProxy
public class jurisdictionAdvice { @Autowired
HttpSession httpSession;
//用户
@Autowired
private MemberInformationService memberInformationService;
//权限
@Autowired
private JurisdictionService jurisdictionService; public Result readOnly(ProceedingJoinPoint pj){
//方法
String method = pj.getSignature().getName();
System.out.println(method);
//获取用户
String user = (String) httpSession.getAttribute("user");
//模拟updateByPrimaryKey
if(method.equals("updateByPrimaryKey")){
user="100010003";
}else {
user="100010004";
}
//查询根据用户查询权限
int jid = memberInformationService.selectJid(user);
//获取权限
System.out.println(jid);
Jurisdiction jurisdiction = jurisdictionService.selectByPrimaryKey(jid);
System.out.println(jurisdiction);
//如果是最高管理
if(jid == 1){
try {
return (Result) pj.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}//如果是中级管理 并方法是修改
else if( jid == 2 && method.equals("updateByPrimaryKey")){
try {
return (Result) pj.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
return new Result().error("权限不足"); }
}

3、controller层
Result代码:
package com.wbg.sums.dto;
public class Result {
// 1203错误编码
// 1224正确编码,有返回数据
// 1028正确编码,无返回数据
// 1222 正确编码 无错误 用于判断删除成功或者失败
/**
* 当修改添加删除 成功的时候,统一使用successMessage方法 编码为1028 否则就是没有成功
*
*/
//状态码
int code;
//数据
Object data;
//消息提示
String message;
public Result() {
}
public Result(String message) {
this.code=1222;
this.message = message;
}
//数量
int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public Result(int code, String message, Object data, int count) {
this.code = code;
this.data = data;
this.message = message;
this.count = count;
}
public Result(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
* successMessage
* 正常返回,携带消息
* code:1028
*
* @param message 消息
* data:null
* count:0
* @return
*/
public static Result successMessage(String message) {
return new Result(1028, message);
}
/**
* success
* 成功方法 带数据返回
* code:1224
*
* @param data 数据
* @param count 总数
* @return
*/
public static Result success(Object data, int count) {
return new Result(1224, "success", data, count);
}
/**
* success
* 成功方法 带数据返回
* code:1224
* message: success
*
* @param data 数据
* count :0
* @return
*/
public static Result success(Object data) {
return new Result(1224, "success", data, 0);
}
/**
* error
* code:203
* data:null
* count:0
*
* @param message 错误信息
* @return
*/
public static Result error(String message) {
return new Result(1203, message);
}
}

测试:

springAOP(Aspect)权限访问页面的更多相关文章
- Asp.net有关访问页面权限的限制和错误页面配置
一.访问页面权限的限制 一个小项目,涉及到用户登录. 在用户没登录访问内容也时,对页面做一定限制,没登录的则不能访问,直接跳转到登录界面. /// <summary> /// 对没有登录用 ...
- spring security自定义拒绝访问页面
如果试图访问一个没有访问权限的页面,那么页面会出现403 访问错误. 如果我们希望自定义访问拒绝页面,只需要随便创建一个jsp页面,让后将这个页面的位置放到配置文件中. 下面创建一个accessDen ...
- asp.net core根据用户权限控制页面元素的显示
asp.net core根据用户权限控制页面元素的显示 Intro 在 web 应用中我们经常需要根据用户的不同允许用户访问不同的资源,显示不同的内容,之前做了一个 AccessControlHelp ...
- Spring MVC或Spring Boot配置默认访问页面不生效?
相信在开发项目过程中,设置默认访问页面应该都用过.但是有时候设置了却不起作用.你知道是什么原因吗?今天就来说说我遇到的问题. 首先说说配置默认访问页面有哪几种方式. 1.tomcat配置默认访问页面 ...
- Html中设置访问页面不在后进行其他页面跳转
Html中设置访问页面不在后进行其他页面跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...
- AD域-让共享目录只显示用户有权限访问的文件夹
问题: 在AD域中,我们一般都会用到共享,如果有很多部门,我们可能还会按部门.职位配置权限.比如CSD,IT,PA等,但文件夹一多,用户看着就头大,而且用户没权限访问的文件夹误点击进去还会提示无权限访 ...
- FireFox每次访问页面时检查最新版本
FireFox每次访问页面时检查最新版本 浏览器都有自己的缓存机制,作为开发人员,每次js的修改都要清空缓存,显然很不方便.而firefox并没有提供ie那样的设置. 下面的方法就可以非常方便的设置f ...
- android-android各大手机系统打开权限管理页面
android系统五花八门,当我们去请求用户的权限的时候,总是会弹出是否允许的对话框. 而且用户一旦不小心点了拒绝,下次就不再询问了,而很多小白用户也不知道怎么去设置.这就导致了很不好的用户体验. 经 ...
- Eclipse中新建jsp文件访问页面时乱码问题
新建.jsp文件,charset和pageEncoding默认是ISO-8859-1,这样的话访问页面时会出现乱码,解决办法:将charset和pageEncoding改为UTF-8(或者GBK/GB ...
随机推荐
- Linux中的叹号命令
在shell环境下操作,需要积累点快捷输入的小技巧: 最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了,这些对于csh,bash,ksh,zsh都适用. 最近还找到一种快速回退上一 ...
- Filter---javaweb的过滤器
1.Filter是什么? Filter的基本功能是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理的前后实现一些特殊的功能. 在Servlet API中定义了三个 ...
- JavaScript(JS)计算某年某月的天数(月末)
方法1 /** * 获取某年月的天数 * @param year 年 * @param month 月(0-11) * @returns {number} 天数 */ var getDaysOfMon ...
- <Android Framework 之路>BootAnimation(2)
前言 上一篇主要讲解了BootAnimation是从何而来,如何启动,从开机,到SurfaceFlinger服务起来,然后到执行开机动画,如果要深入的看里面的代码,是需要花一定的时间的,我们旨在了解大 ...
- jQuery无刷新上传之uploadify
引自 文章 http://www.cnblogs.com/babycool/archive/2012/08/04/2623137.html 将文章里的代码整合在了一个解决方案里,直接可以下载测试,上代 ...
- Revit
log file Windows Vista or Windows 7:%LOCALAPPDATA%\Autodesk\Revit\Autodesk Revit 2016\Journals
- 使用Idea搭建Spring Boot环境
1.基本安装配置 IntelliJ IDEA搭建SpringBoot的小Demo SpringBoot+IDEA+Maven快速入门 2.
- Linux文件系统的实现 ZZ
作者:Vamei 出处:http://www.cnblogs.com/vamei Linux文件管理从用户的层面介绍了Linux管理文件的方式.Linux有一个树状结构来组织文件.树的顶端为根目录(/ ...
- css笔记 2
定义一个类选择器.center {text-align: center} h1 有 center 类.这意味将遵守 ".center" 选择器中的规则.<h1 class=& ...
- 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩
上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用,并且已经成功地将一个包含了这个UI5应用的docker镜像上传到Dock ...