我在项目中使用弹簧和弹簧安全4。 我必须使用ROLE_USER或ROLE_TIMER_TASK调用我的dao方法。
目前我正在使用此注释 -
@Secured({"ROLE_USER", "ROLE_TIMER_TASK"})
这个@Secured注释只允许那些同时拥有这两个角色的用户,但我想要由具有任何一个角色的用户调用此方法。
如果用户具有此角色中的任何一个角色并调用此方法,是否可以?
答案 0 :(得分:26)
对于或,请使用@PreAuthorize
注释:
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_TIMER_TASK')")
在Spring Security版本4中,ROLE_
前缀可以省略:
@PreAuthorize("hasRole('USER') or hasRole('TIMER_TASK')")
确保在安全配置中启用了注释前和注释后。
答案 1 :(得分:6)
要通过上述任何角色调用方法,请使用:
input_csv = []
with open('YourCsv.csv', 'r', encoding='UTF-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
input_csv.append(row)
for row in input_csv:
print(row)
for row in input_csv:
print(row)
并在安全类中启用注释前和注释:
@PreAuthorize("hasAnyRole('ROLE_USER','ROLE_TIMER_TASK')")
答案 2 :(得分:2)
除了holmis83之前的回答....
为方法安全启用预注释和后注释:
Java配置:
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfig {
// ...
}
Xml配置:
<global-method-security pre-post-annotations="enabled"/>