今天就跟大家聊聊有關(guān)Spring Security 中權(quán)限控制方式有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計制作、成都網(wǎng)站制作與策劃設(shè)計,文縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:文縣等地區(qū)。文縣做網(wǎng)站價格咨詢:18982081108Spring Security 中對于權(quán)限控制默認已經(jīng)提供了很多了,但是,一個優(yōu)秀的框架必須具備良好的擴展性,恰好,Spring Security 的擴展性就非常棒,我們既可以使用 Spring Security 提供的方式做授權(quán),也可以自定義授權(quán)邏輯。一句話,你想怎么玩都可以!
今天松哥來和大家介紹一下 Spring Security 中四種常見的權(quán)限控制方式。
四種方式,我們分別來看。
1.表達式控制 URL 路徑權(quán)限
首先我們來看第一種,就是通過表達式控制 URL 路徑權(quán)限,這種方式松哥在之前的文章中實際上和大家講過,這里我們再來稍微復習一下。
Spring Security 支持在 URL 和方法權(quán)限控制時使用 SpEL 表達式,如果表達式返回值為 true 則表示需要對應的權(quán)限,否則表示不需要對應的權(quán)限。提供表達式的類是 SecurityExpressionRoot:
可以看到,SecurityExpressionRoot 有兩個實現(xiàn)類,表示在應對 URL 權(quán)限控制和應對方法權(quán)限控制時,分別對 SpEL 所做的拓展,例如在基于 URL 路徑做權(quán)限控制時,增加了 hasIpAddress 選項。
我們來看下 SecurityExpressionRoot 類中定義的最基本的 SpEL 有哪些:
可以看到,這些都是該類對應的表達式,這些表達式我來給大家稍微解釋下:
表達式 | 備注 |
---|---|
hasRole | 用戶具備某個角色即可訪問資源 |
hasAnyRole | 用戶具備多個角色中的任意一個即可訪問資源 |
hasAuthority | 類似于 hasRole |
hasAnyAuthority | 類似于 hasAnyRole |
permitAll | 統(tǒng)統(tǒng)允許訪問 |
denyAll | 統(tǒng)統(tǒng)拒絕訪問 |
isAnonymous | 判斷是否匿名用戶 |
isAuthenticated | 判斷是否認證成功 |
isRememberMe | 判斷是否通過記住我登錄的 |
isFullyAuthenticated | 判斷是否用戶名/密碼登錄的 |
principle | 當前用戶 |
authentication | 從 SecurityContext 中提取出來的用戶對象 |
這是最基本的,在它的繼承類中,還有做一些拓展,我這個我就不重復介紹了。
如果是通過 URL 進行權(quán)限控制,那么我們只需要按照如下方式配置即可:
protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("admin") .antMatchers("/user/**").hasAnyRole("admin", "user") .anyRequest().authenticated() .and() ... }
名稱欄目:SpringSecurity中權(quán)限控制方式有哪些-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://jinyejixie.com/article48/jgchp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、微信公眾號、搜索引擎優(yōu)化、微信小程序、靜態(tài)網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)