首页 > 代码库 > Spring Security应用开发(19)基于方法的授权(三)AOP
Spring Security应用开发(19)基于方法的授权(三)AOP
本文介绍使用AOP的配置方式来实现基于方法的授权。
(1)首先使用Spring Security提供的protect-pointcut进行配置。
protect-pointcut结点配置访问符合指定条件的方法锁需要的角色列表。
<!-- 使用AOP的方式来定义方法级别的访问控制 --> <sec:global-method-security> <sec:protect-pointcut access="ROLE_USER,ROLE_ADMIN" expression="execution(* com.test.service.*.get*(..))"/> <sec:protect-pointcut access="ROLE_ADMIN" expression="execution(* com.test.service.*.add*(..))"/> <sec:protect-pointcut access="ROLE_ADMIN" expression="execution(* com.test.service.*.update*(..))"/> <sec:protect-pointcut access="ROLE_ADMIN" expression="execution(* com.test.service.*.remove*(..))"/> </sec:global-method-security>
(2)在控制器方法中调用指定的服务方法。
@Controller @RequestMapping("/home") public class HomeController { private UserService userService; public UserService getUserService() { return userService; } @Resource public void setUserService(UserService userService) { this.userService = userService; } @RequestMapping("/") public ModelAndView index(){ ModelAndView mv = new ModelAndView(); mv.addObject("message", "Hello,welcome!"); mv.setViewName("home/index"); UserBean user = this.userService.getUserByName("zhangsan"); this.userService.addUser(); this.userService.removeUser(); this.userService.updateUser(); return mv; } }
(3)运行测试。
当使用具有ROLE_ADMIN角色的zhangsan用户登录时,可以成功访问/home/页面,即成功调用了getUserByName()、addUser()、removeUser()和updateUser()方法。
当使用具有ROLE_USER角色的wangwu用户登录时,在访问/home/页面时出现拒绝访问的403错误。因为ROLE_USER角色只能访问getUserByName()的查询方法,而无权访问后面三个增删改的方法。
Spring Security应用开发(19)基于方法的授权(三)AOP
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。