最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

 更新時(shí)間:2020年03月03日 14:29:58   作者:天宇軒-王  
這篇文章主要介紹了SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

菜單控制:

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

數(shù)據(jù)控制:

由于數(shù)據(jù)都是從后端查的,在后端控制權(quán)限就可以了

<!--
    開啟權(quán)限控制注解支持
    jsr250-annotations="enabled"表示支持jsr250-api的注解,需要jsr250-api的jar包
    pre-post-annotations="enabled"表示支持spring表達(dá)式注解
    secured-annotations="enabled"這才是SpringSecurity提供的注解
   -->
  <security:global-method-security jsr250-annotations="enabled"
                   pre-post-annotations="enabled"
                   secured-annotations="enabled"/>

注:這個(gè)要放在mvc的容器中,因?yàn)樽尤萜骺梢栽L問到主容器,主容器訪問不到子容器

/表示當(dāng)前類中所有方法都需要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";
}
}
//表示當(dāng)前類中findAll方法需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
public class ProductController {
@RequestMapping("/findAll")
@PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_PRODUCT')")//spring表達(dá)式注解
public String findAll(){
return "product-list";
}
}
//表示當(dāng)前類中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
@Secured({"ROLE_ADMIN","ROLE_PRODUCT"})//SpringSecurity注解
public class ProductController {
@RequestMapping("/findAll")
public String findAll(){
return "product-list";
}
}

但是會(huì)報(bào)403無法訪問

方式一:在 spring-security.xml配置文件中處理

<!--設(shè)置可以用spring的el表達(dá)式配置Spring Security并自動(dòng)生成對(duì)應(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項(xiàng)目,也要把這個(gè)掃描進(jìn)去。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java編程用兩個(gè)棧實(shí)現(xiàn)隊(duì)列代碼分享

    Java編程用兩個(gè)棧實(shí)現(xiàn)隊(duì)列代碼分享

    這篇文章主要介紹了Java編程用兩個(gè)棧實(shí)現(xiàn)隊(duì)列代碼分享,具有一定參考價(jià)值,這里給大家分享下,供需要的朋友了解。
    2017-10-10
  • Java如何配置IDEA自定義注釋

    Java如何配置IDEA自定義注釋

    在IDEA中設(shè)置自動(dòng)創(chuàng)建類和方法的注釋可以提高編碼效率,確保代碼的一致性和可讀性,首先,對(duì)于創(chuàng)建類的注釋,可以通過修改File→Settings→File and Code Templates→Class的模板來實(shí)現(xiàn),其次,對(duì)于方法注釋
    2024-10-10
  • 詳解如何在Spring中為@Value注解設(shè)置默認(rèn)值

    詳解如何在Spring中為@Value注解設(shè)置默認(rèn)值

    在Spring開發(fā)中,我們經(jīng)常會(huì)遇到需要從配置文件中讀取屬性的情況,@Value注解是Spring提供的一種便捷方式,能夠讓我們輕松地將配置文件中的屬性注入到Spring Bean中,
    2024-10-10
  • 深入理解Java中的String(示例詳解)

    深入理解Java中的String(示例詳解)

    文章詳細(xì)介紹了Java中String類的特點(diǎn)、用途、主要方法以及常見用法,String類是不可變的,具有字符串常量池,特定的內(nèi)存結(jié)構(gòu),并隨JDK版本更新而優(yōu)化,它廣泛用于表示和處理文本數(shù)據(jù),并在內(nèi)存管理和性能優(yōu)化方面表現(xiàn)出色,感興趣的朋友一起看看吧
    2025-03-03
  • Java開發(fā)人員需知的十大戒律

    Java開發(fā)人員需知的十大戒律

    這篇文章主要介紹了Java開發(fā)人員需知的十大戒律,較為詳細(xì)的總結(jié)分析了Java開發(fā)中常見的注意事項(xiàng)與編程技巧,需要的朋友可以參考下
    2015-10-10
  • SpringMVC中參數(shù)綁定問題實(shí)例詳解

    SpringMVC中參數(shù)綁定問題實(shí)例詳解

    springmvc是用來處理頁面的一些請(qǐng)求,然后將數(shù)據(jù)再通過視圖返回給用戶的,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中參數(shù)綁定問題的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Java基于循環(huán)遞歸回溯實(shí)現(xiàn)八皇后問題算法示例

    Java基于循環(huán)遞歸回溯實(shí)現(xiàn)八皇后問題算法示例

    這篇文章主要介紹了Java基于循環(huán)遞歸回溯實(shí)現(xiàn)八皇后問題算法,結(jié)合具體實(shí)例形式分析了java的遍歷、遞歸、回溯等算法實(shí)現(xiàn)八皇后問題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Java8對(duì)List排序的方法大全

    Java8對(duì)List排序的方法大全

    這篇文章主要給大家介紹了關(guān)于Java8對(duì)List排序的方法大全,其實(shí)Java針對(duì)數(shù)組和List的排序都有實(shí)現(xiàn),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • SpringBoot熔斷機(jī)制之CircuitBreaker詳解

    SpringBoot熔斷機(jī)制之CircuitBreaker詳解

    這篇文章主要介紹了SpringBoot熔斷機(jī)制之CircuitBreaker詳解,SpringBoot的熔斷機(jī)制在微服務(wù)架構(gòu)中扮演著重要角色,其中CircuitBreaker是其核心機(jī)制之一,用于防止服務(wù)的異常狀態(tài)影響到整個(gè)系統(tǒng)的運(yùn)作,需要的朋友可以參考下
    2023-10-10
  • Java中的DecimalFormat用法解析

    Java中的DecimalFormat用法解析

    這篇文章主要介紹了Java中的DecimalFormat用法解析,DecimalFormat是Java中用于格式化數(shù)字的類,它提供了一種簡單而靈活的方式來格式化數(shù)字,包括指定小數(shù)位數(shù)、千位分隔符、貨幣符號(hào)等,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

漳浦县| 和田县| 都江堰市| 淮北市| 无为县| 德钦县| 永年县| 潮安县| 石台县| 浑源县| 忻城县| 大连市| 兖州市| 海林市| 彩票| 玉田县| 苍山县| 察隅县| 郧西县| 云阳县| 上饶县| 宁蒗| 内丘县| 晋州市| 淮南市| 镇巴县| 伊吾县| 青龙| 丽水市| 龙海市| 柯坪县| 文安县| 阜新| 乐亭县| 靖边县| 白沙| 霍城县| 苗栗县| 清水县| 子长县| 北票市|