首页 > 代码库 > Spring Security应用开发(20)基于方法的授权(四)使用@RolesAllowed注解
Spring Security应用开发(20)基于方法的授权(四)使用@RolesAllowed注解
Spring Security还提供了一种基于注解的方式来实现基于方法的授权。这就是本文介绍的@RolesAllowed注解。@RolesAllowed是JSR250定义的注解。
(1)在spring-security.xml文件中启用JSR250注解支持。
<!-- 启用JSR250支持:@RolesAllowed注解 --> <sec:global-method-security jsr250-annotations="enabled" />
(2)在需要授权控制的方法中加上@RolesAllowed注解。
@RolesAllowed注解可以支持字符串数组的参数值,表示当前用户拥有多个角色中的一个即可满足授权访问的条件。
public class UserService { @RolesAllowed({"ROLE_USER","ROLE_ADMIN"}) public UserBean getUserByName(String name){ UserBean user = new UserBean(name,1001); System.out.println("getUserByName"); return user; } @RolesAllowed("ROLE_ADMIN") public void addUser(){ System.out.println("addUser"); } @RolesAllowed("ROLE_ADMIN") public void removeUser(){ System.out.println("removeUser"); } @RolesAllowed("ROLE_ADMIN") public void updateUser(){ System.out.println("updateUser"); } }
(3)调用有关的方法。
@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; } }
(4)测试运行。
当使用具有ROLE_ADMIN角色的zhangsan用户访问这些方法时,将允许访问全部方法,从而页面可以正常访问。
输出结果:
getUserByName
addUser
removeUser
updateUser
而当使用具有ROLE_USER角色的wangwu用户访问这些方法时,将仅允许访问getUserByName()的查询方法,而会拒绝访问其它增删改方法,从而出现拒绝访问的403页面。
输入结果:
getUserByName
Spring Security应用开发(20)基于方法的授权(四)使用@RolesAllowed注解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。