<security:authorize access="hasPermission( 'formDialog', 'edit')">,hasPermission方法如何直接调用MyPermissionEvaluator中的方法
时间: 2024-01-22 09:03:56 浏览: 111
在Spring Security中,`hasPermission`方法是通过调用`PermissionEvaluator`接口中的`hasPermission`方法来实现的。因此,您需要实现自己的`PermissionEvaluator`接口,并将其注册到Spring Security中。假设您的自定义`PermissionEvaluator`名称为`MyPermissionEvaluator`,您可以按照以下步骤调用其方法:
1. 注册`MyPermissionEvaluator`到Spring Security中。您可以在配置类中使用`@Bean`注解注册它,如下所示:
```
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public MyPermissionEvaluator myPermissionEvaluator() {
return new MyPermissionEvaluator();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// ...
}
}
```
2. 在`hasPermission`方法中,您可以通过调用`Authentication`对象的`getPrincipal`方法来获取用户信息,然后使用`MyPermissionEvaluator`中的方法来检查权限。一个示例实现如下:
```
@Service
public class MyPermissionEvaluator implements PermissionEvaluator {
@Autowired
private UserService userService;
@Override
public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) {
User currentUser = (User) authentication.getPrincipal();
return userService.hasPermission(currentUser, targetDomainObject, permission);
}
// ...
}
```
在上面的示例中,`UserService`是一个您实现的服务类,它包含了检查权限的实际逻辑。您可以在`MyPermissionEvaluator`中注入它,并调用其中的方法来检查权限。
这样,当您在使用`hasPermission`方法时,Spring Security就会调用`MyPermissionEvaluator`中的`hasPermission`方法来检查权限。
阅读全文