参考:https://blog.csdn.net/u013310119/article/details/105270552/
https://www.cnblogs.com/huangzhe1515023110/p/9276055.html
1.Aop实现权限控制(切入点为被指定注解) 1.1 添加aop相关Maven依赖
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.6</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency>
1.2 修改Spring配置,添加下列代码。 <aop:aspectj-autoproxy />声明自动为spring容器中那些配置@aspectJ切面的bean创建代 理。有一个proxy-target-class属性,默认为false,表示使用jdk动态代理织入增强,当配为<aop:aspectj-autoproxy poxy-target-class="true"/>时,表示使用CGLib动态代理技术织入增强。不过即使proxy-target-class设置为false,如果目标类没有声明接口,则spring将自动使用CGLib动态代理。
<aop:aspectj-autoproxy proxy-target-class="false"/>
1.3修改SpringMVC配置 1.3.1在beans标签里面引入aop标签支持
xmlns:aop="http://www.springframework.org/schema/aop" http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
1.3.2 添加配置。同spring配置一样(猜测controller和Service的aop要分开配置,未证实)
<aop:aspectj-autoproxy proxy-target-class="false"/>
1.4 新建注解接口(切入点)
package org.book.aop; import java.lang.annotation.*; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface PermissionCheck { }
说明: @Documented注解表明这个注解要被javadoc记录。注解默认状态下是不被javadoc记录的。 @Retention注解表明该注解保留到那个阶段,主要有三个值: SOURCE —— 这种注解保留在源代码级别,编译时就会被忽略 CLASS —— 这种注解编译时被保留,在class文件中存在,但JVM将会忽略 RUNTIME —— 这种注解将被JVM保留,利用反射机制可以获取并使用。 @Target注解表明该注解作用的范围。包括package、method、field、构造方法、成员变量、枚举值等属性。 @Inherited注解表明该注解是否影响子类。如果定义的注解上使用了@Inherited标记,则使用该注解的某个父类,它的子类默认继承所有的属性 1.5新建切面类 详情看注解
package org.book.aop; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.book.bean.Manager; import org.book.common.JsonResult; import org.book.service.IManagerService; import org.book.utils.SysContent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @Aspect//声明本类是切面 @Component//声明组件 @Slf4j public class PermissionCheckAspect { @Autowired IManagerService managerService; @Pointcut("@annotation(org.book.aop.PermissionCheck)")//拦截被PermissionCheck注解的方法 private void scall(){} /** * 环绕 */ @Around("scall()") public Object prepareFood(ProceedingJoinPoint joinPoint) throws Throwable{ log.info("进入切面方法"); RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); //从获取RequestAttributes中获取HttpServletRequest的信息 HttpServletRequest request = (HttpServletRequest) requestAttributes.resolveReference(RequestAttributes.REFERENCE_REQUEST); HttpSession session= request.getSession();//获取session String name = ""+session.getAttribute("user");//获取登录的信息 Manager manager =null; try { manager = managerService.getById(name); }catch (Exception e){ return JsonResult.renderFail("你没有权限"); } if(manager==null||manager.getUsername()==null||manager.getUsername().equals("")){ return JsonResult.renderFail("你没有权限"); } return joinPoint.proceed(); } }
1.6 在需要切入的方法前添加注解(即之前新建的注解 PermissionCheck),
1.7 前置通知、后置通知等 未完待续。。。。。
Comments | 129 条评论
博客作者 Anime defenders units
Hi it’s me, I am also visiting this website on a regular basis, this web
site is genuinely nice and the viewers are actually sharing pleasant thoughts.
博客作者 Anime defenders units
Thanks for the marvelous posting! I actually enjoyed reading it, you might be a great author.I will
make sure to bookmark your blog and definitely will come back very soon. I
want to encourage you to ultimately continue your great posts, have a nice weekend!
博客作者 canadian pharmaceuticals
Pretty part of content. I just stumbled upon your site and in accession capital to assert that I acquire in fact loved account your blog posts. Anyway I’ll be subscribing to your feeds or even I achievement you get right of entry to consistently quickly.
博客作者 canadian pharmacy
It’s actually very complex in this busy life to listen news on TV, thus I just use world wide web for that purpose, and take the most up-to-date news.
博客作者 canada pharmaceuticals online generic
If you want to obtain much from this piece of writing then you have to apply such techniques to your won blog.
博客作者 canadian pharmaceuticals online shipping
Hello it’s me, I am also visiting this web page on a regular basis, this web page is really good and the viewers are in fact sharing nice thoughts.
博客作者 canadian pharmaceutical companies
hey there and thank you for your info – I have certainly picked up something new from right here. I did however expertise a few technical issues using this site, as I experienced to reload the web site many times previous to I could get it to load correctly. I had been wondering if your hosting is OK? Not that I am complaining, but sluggish loading instances times will sometimes affect your placement in google and can damage your quality score if advertising and marketing with Adwords. Well I’m adding this RSS to my email and can look out for a lot more of your respective intriguing content. Make sure you update this again soon.
博客作者 canadian pharmaceuticals online
Hi there! I know this is somewhat off topic but I was wondering if you knew where I could locate a captcha plugin for my comment form? I’m using the same blog platform as yours and I’m having problems finding one? Thanks a lot!
博客作者 canadian pharmaceutical companies
I’m truly enjoying the design and layout of your blog. It’s a very easy on the eyes which makes it much more enjoyable for me to come here and visit more often. Did you hire out a developer to create your theme? Exceptional work!
博客作者 canada pharmaceuticals online generic
Thanks for sharing such a fastidious idea, piece of writing is nice, thats why i have read it completely
博客作者 canada drugs online
This is really interesting, You are an overly skilled blogger. I have joined your feed and look ahead to searching for more of your great post. Also, I have shared your web site in my social networks
博客作者 online pharmacies legitimate
I really like what you guys tend to be up too. This sort of clever work and exposure! Keep up the good works guys I’ve added you guys to our blogroll.
博客作者 best canadian online pharmacy
I really love your site.. Pleasant colors & theme. Did you develop this web site yourself? Please reply back as I’m trying to create my very own blog and want to learn where you got this from or what the theme is named. Cheers!
博客作者 24 hour pharmacy
What’s up everyone, it’s my first pay a quick visit at this site, and post is genuinely fruitful in favor of me, keep up posting these content.
博客作者 canadian pharmaceuticals online shipping
It’s going to be finish of mine day, but before ending I am reading this wonderful article to improve my knowledge.