Spring security config httpSecurity tips

dapideng發表於2019-11-07

在配置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協議 進行許可,可自由轉載、引用,但需署名作者且註明。

相關文章