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都适用. 最近还找到一种快速回退上一 ...
- springboot1.5.10兼容高版本6.1.1elasticsearch
1.引入依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elastic ...
- javaweb之jsp的属性范围
1.什么是jsp的属性范围? 所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以保存并继续使用.jsp提供了四种属性范围,如下: 当前页,对应的jsp对象为pageContext,属 ...
- C Primer Plus note1
C语言编译错误:multiple definition of `main' main多重定义,在同一个工程中定义了多个main函数 出现如下图的错误: 这是因为在第一张图中,有一个main.c的mai ...
- thinkphp下通过页面链接传递的参数获取一次后失效
在thinkphp下通过页面链接传递的参数获取一次后失效,ajax内部无法再次使用.想要使用必须再次用js获取其值,通过ajax传递给后台使用. 1.通过页面链接传递参数给下一页 2.可以再下一页后台 ...
- 打印thinkphp中的sql语句
var_dump($repair->fetchSql(true)->where(array('cuername' =>$cuername))->order('applytime ...
- java IO流实现删除文件夹以及文件夹中的内容
这篇主要是对IO文件流对文件常用处理中的删除文件夹,平时我们直接删除文件夹既可以删除里面的全部内容. 但是java在实现删除时,只能是文件才会被删除. 所以这里需要定义一个方法,来递归调用方法(递归调 ...
- javascript判断一个元素是另外一个元素的子元素
javascript判断一个元素是另外一个元素的子元素用途有很多,最常用的就是当点击页面的空白处去执行某些操作,比如弹出层等. function isParent (obj,parentObj){ w ...
- webapi datetime类型序列化成json带T且时间不对问题的解决
在global.asax.cs里加入如下代码: protected void Application_Start() { GlobalConfiguration.Configuration.Forma ...
- bat中实现代码拷贝到指定目录后启动命令行并更改默认路径
### window书写shell脚本,实现判断指定文件是否存在,存在就删除,然后复制新文件到此目录 ``` if exist "G:\test\test2\1.txt" (d ...