javascript
java url 授权,Spring MVC框架 - 基本认证之URL 授权认证
[導讀]為控制器添加注解是非常簡單的,但這往往并不是最可行的方案。有時候,我們會想要完全控制授權功能。
為控制器添加注解是非常簡單的,但這往往并不是最可行的方案。有時候,我們會想要完全控制授權功能。
移除@Secured 注解,我們將會采用一種更好的方案。
通過修改SecurityConfiguration 類,我們看一下Spring Security 允許實現什么功能:@Configuration
@EnableGlobalMethodSecurity(securedEnabled?=?true)
public?class?SecurityConfiguration?extends?WebSecurityConfigurerAdapter?{
@Autowired
public?void?configureAuth(AuthenticationManagerBuilder?auth)
throws?Exception?{
auth.inMemoryAuthentication().withUser("user").password("user")
.roles("USER").and().withUser("admin").password("admin")
.roles("USER",?"ADMIN");
}
@Override
protected?void?configure(HttpSecurity?http)?throws?Exception?{
http.httpBasic().and().csrf().disable().authorizeRequests()
.antMatchers("/login",?"/logout").permitAll()
.antMatchers(HttpMethod.GET,?"/api/**").hasRole("USER")
.antMatchers(HttpMethod.POST,?"/api/**").hasRole("ADMIN")
.antMatchers(HttpMethod.PUT,?"/api/**").hasRole("ADMIN")
.antMatchers(HttpMethod.DELETE,?"/api/**").hasRole("ADMIN")
.anyRequest().authenticated();
}
}
在前面的示例代碼中,我們使用Spring Security 流暢的API,配置了應用程序的安全策略。
這個 API 通過調用相關安全功能的方法,能夠在全局上配置Spring Security,這些方法可以通過and()連接起來。
我們剛剛定義的是一個基本認證,沒有CSRF 保護功能。任何用戶都允許發送針對“/login”和“/logout”的請求。對API 的GET 請求只允許具有USER 角色的用戶訪問,而對API 的POST、PUT 和DELETE 請求則只允許具有ADMIN 角色的用戶訪問。最后,對其他內容的訪問則要求用戶進行過認證,不管角色是什么,都可以進行訪問。
CSRF 所代表的含義是跨站請求偽造(Cross Site Request Forgery),指的是一種攻擊形式,惡意的Web 站點將會在他們的網站上展示一個表單,但是會將表單的數據POST 提交到我們的站點上。如果我們站點的用戶沒有退出的話,那么POST 請求能夠獲取用戶的cookie,這樣的話,就會被認為是認證過的用戶。
針對 CSRF 的防護會生成短期存活的token,它會隨著表單數據一起進行提交。我們會在下面的章節看到如何啟用該功能,現在我們先將其禁用。參考http://docs.spring.io/spring-security/site/docs/current/ reference/htmlsingle/#csrf 來了解更多細節。
tips:如果想了解針對API 請求進行認證的更多知識,可以參考:http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#authorize-requests。
總結
以上是生活随笔為你收集整理的java url 授权,Spring MVC框架 - 基本认证之URL 授权认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于tcmalloc\malloc和ne
- 下一篇: 在HTML 页面中如何显示带圈圈的数字