<security:global-method-security pre-post-annotations="enabled">
注意在springMvc.xml的配置文件中配置,配置动态代理使用cgLib进行动态代理
<!--
支持AOP的注解支持,AOP底层使用代理技术
JDK动态代理,要求必须有接口
cglib代理,生成子类对象,proxy-target-class="true" 默认使用cglib的方式
-->
<aop:aspectj-autoproxy proxy-target-class="true"/>
主要使用的两种方式
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasAuthority(''sys_order_findAll)")
hasRole()方法:参数加不加ROLE_都可以,
原因:
private static String getRoleWithDefaultPrefix(String defaultRolePrefix, String role) {
if (role == null) {
return role;
}
if (defaultRolePrefix == null || defaultRolePrefix.length() == 0) {
return role;
}
if (role.startsWith(defaultRolePrefix)) {
return role;
}
return defaultRolePrefix + role;
}
一个spring-security重要的一个api
获取当前认证的用户对象
(User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();