我们之前在前面说过三种授权方式
现在我们就是用 第二种 和 第三种方式
注解方式
建议在 controller 层进行方法授权.
为什么说建议呢?
因为在 service 层也是可以授权的, 但是不直观. 因为有些方法是公用的而有些方法是针对某些业务逻辑的,所以建议在 controller 层进行授权.
我们使用@RequiresPermissions() 注解来添加执行权限
//商品信息方法
@RequestMapping("/queryItems")
@RequiresPermissions("item:query")//执行queryItems需要"item:query"权限
public ModelAndView queryItems(HttpServletRequest request) throws Exception {
// 指定逻辑视图名
modelAndView.setViewName("itemsList");
return modelAndView;
}
配置开启 aop 对类代理
<!-- 开启aop,对类代理 -->
<aop:config proxy-target-class="true"></aop:config>
<!-- 开启shiro注解支持 -->
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager" />
</bean>