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 ...
随机推荐
- MySQL:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决方法: 修改密码:alter user 'root'@'localhost' identified by '123456'; mysql> use mysql; ERROR 1820 (HY ...
- 【转】百亿级实时大数据分析项目,为什么不用Hadoop?
百亿数量级的大数据项目,软硬件总体预算只有30万左右,需求是进行复杂分析查询,性能要求多数分析请求达到秒级响应. 遇到这样的项目需求,预算不多的情况,似乎只能考虑基于Hadoop来实施. ...
- C#学习笔记14
1.在多个线程的同步数据中,避免使用this.typeof(type).string进行同步锁,使用这3个容易造成死锁. 2.使用Interlocked类:我们一般使用的互斥锁定模式(同步数据)为Lo ...
- JBPM学习第2篇:为Eclipse添加JBPM开发支持
1.Eclipse添加JBoss支持插件 参考:Eclipse添加JBoss支持 若已安装,直接跳过! 2.Eclipse添加Drools插件 jbpm-installer-full解压后的文件夹中找 ...
- thinkphp下通过页面链接传递的参数获取一次后失效
在thinkphp下通过页面链接传递的参数获取一次后失效,ajax内部无法再次使用.想要使用必须再次用js获取其值,通过ajax传递给后台使用. 1.通过页面链接传递参数给下一页 2.可以再下一页后台 ...
- java unsupported major.minor version 51.0 解决
1.概述 出现如题所述异常 是因为jdk高版本 编译后的class文件 运行在低版本的jre环境下(如jdk7编译 运行在jdk6环境下) 2. 解决方案 在eclipse等ide中重新编译 指定编译 ...
- BZOJ3498: PA2009 Cakes(三元环)
题意 题目链接 Sol 按照套路把边转成无向图,我们采取的策略是从权值大的向权值小的连边 然后从按权值从小到大枚举每个点,再枚举他们连出去的点\(v\) 如果\(v\)的度数\(\leqslant M ...
- js原生获取css属性
原文参考http://blog.csdn.net/lzding/article/details/46317777 1.写在dom上的属性,内联样式 <div id="box" ...
- stylish——一键为网页换肤,改变字体大小,去除广告
今天给大家介绍的是一款非常好用的插件stylishstylish是一款可以为网站自定义主题的插件 可以在chrome的应用商店找到也可以通过网址访问https://userstyles.org/ 应用 ...
- Junit 单元测试、BeanUtils、Properties类
一. Junit单元测试 1.1. Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好 ...