1. 程式人生 > >Spring Security應用開發(19)基於方法的授權(三)AOP

Spring Security應用開發(19)基於方法的授權(三)AOP

ntc blog view lob byname 控制器 頁面 poi bject

本文介紹使用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