在配置security時,由於版本更迭、加上本身配置項就很多,所以顯得好像很複雜似的。
所以飯要一點一點吃嘛,先記下一個小知識點
hasRole() 和 hasAuthority()區別
下面是spring官方文件的一個例子
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests() 1
.antMatchers("/resources/**", "/signup", "/about").permitAll() 2
.antMatchers("/admin/**").hasRole("ADMIN") 3
.antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')") 4
.anyRequest().authenticated() 5
.and()
// ...
.formLogin();
}
例子中用了hasRole() 表示有某種角色才可以訪問
但是同時存在hasAuthority()方法
那麼如何使用Role和Authority呢?
其實在Spring Security中,對於GrantedAuthority介面實現類來說是不區分是Role還是Authority,二者區別就是如果是hasAuthority判斷,就是判斷整個字串,判斷hasRole時,系統自動加上ROLE_到判斷的Role字串上,也就是說hasRole("ADMIN")和hasAuthority('ROLE_ADMIN')是相同的。
nice~ ?
本作品採用《CC 協議》,轉載必須註明作者和本文連結
本文由telami 創作,採用CC BY 3.0 CN協議 進行許可,可自由轉載、引用,但需署名作者且註明。