SpringSecurity權(quán)限控制實現(xiàn)原理解析
菜單控制:


可以用來判斷這個用戶是不是有這些角色,沒有的話就不展示


數(shù)據(jù)控制:
由于數(shù)據(jù)都是從后端查的,在后端控制權(quán)限就可以了
<!--
開啟權(quán)限控制注解支持
jsr250-annotations="enabled"表示支持jsr250-api的注解,需要jsr250-api的jar包
pre-post-annotations="enabled"表示支持spring表達式注解
secured-annotations="enabled"這才是SpringSecurity提供的注解
-->
<security:global-method-security jsr250-annotations="enabled"
pre-post-annotations="enabled"
secured-annotations="enabled"/>
注:這個要放在mvc的容器中,因為子容器可以訪問到主容器,主容器訪問不到子容器
/表示當前類中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
@RolesAllowed({"ROLE_ADMIN","ROLE_PRODUCT"})//JSR-250注解
public class ProductController {
@RequestMapping("/findAll")
public String findAll(){
return "product-list";
}
}
//表示當前類中findAll方法需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
public class ProductController {
@RequestMapping("/findAll")
@PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_PRODUCT')")//spring表達式注解
public String findAll(){
return "product-list";
}
}
//表示當前類中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
@Secured({"ROLE_ADMIN","ROLE_PRODUCT"})//SpringSecurity注解
public class ProductController {
@RequestMapping("/findAll")
public String findAll(){
return "product-list";
}
}
但是會報403無法訪問
方式一:在 spring-security.xml配置文件中處理
<!--設(shè)置可以用spring的el表達式配置Spring Security并自動生成對應(yīng)配置組件(過濾器)--> <security:http auto-config="true" use-expressions="true"> <!--省略其它配置--> <!--403異常處理--> <security:access-denied-handler error-page="/403.jsp"/> </security:http>
方式二:在 web.xml中處理
<error-page> <error-code>403</error-code> <location>/403.jsp</location> </error-page>
方式三:編寫異常處理器
/**
* @author WGR
* @create 2020/3/2 -- 17:33
*/
@ControllerAdvice
public class ControllerExceptionAdvice {
//只有出現(xiàn)AccessDeniedException異常才調(diào)轉(zhuǎn)403.jsp頁面
@ExceptionHandler(AccessDeniedException.class)
public String exceptionAdvice(){
System.out.println("1234");
return "forward:/403.jsp";
}
}
注:如果是spring項目,也要把這個掃描進去。


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot整合Security權(quán)限控制登錄首頁
- SpringBoot?整合Security權(quán)限控制的初步配置
- 詳解如何在項目中應(yīng)用SpringSecurity權(quán)限控制
- Spring?Security權(quán)限管理實現(xiàn)接口動態(tài)權(quán)限控制
- Spring?Security實現(xiàn)統(tǒng)一登錄與權(quán)限控制的示例代碼
- 基于Spring Security前后端分離的權(quán)限控制系統(tǒng)問題
- 詳解Spring Security 中的四種權(quán)限控制方式
- Spring?Security權(quán)限控制的實現(xiàn)接口
相關(guān)文章
詳解如何在Spring中為@Value注解設(shè)置默認值
在Spring開發(fā)中,我們經(jīng)常會遇到需要從配置文件中讀取屬性的情況,@Value注解是Spring提供的一種便捷方式,能夠讓我們輕松地將配置文件中的屬性注入到Spring Bean中,2024-10-10
Java基于循環(huán)遞歸回溯實現(xiàn)八皇后問題算法示例
這篇文章主要介紹了Java基于循環(huán)遞歸回溯實現(xiàn)八皇后問題算法,結(jié)合具體實例形式分析了java的遍歷、遞歸、回溯等算法實現(xiàn)八皇后問題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
SpringBoot熔斷機制之CircuitBreaker詳解
這篇文章主要介紹了SpringBoot熔斷機制之CircuitBreaker詳解,SpringBoot的熔斷機制在微服務(wù)架構(gòu)中扮演著重要角色,其中CircuitBreaker是其核心機制之一,用于防止服務(wù)的異常狀態(tài)影響到整個系統(tǒng)的運作,需要的朋友可以參考下2023-10-10

