亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring的@PreAuthorize注解自定義權(quán)限校驗(yàn)詳解

 更新時(shí)間:2023年11月06日 08:32:49   作者:Slavic_  
這篇文章主要介紹了Spring的@PreAuthorize注解自定義權(quán)限校驗(yàn)詳解,由于項(xiàng)目中,需要對(duì)外開(kāi)放接口,要求做請(qǐng)求頭校驗(yàn),不做其他權(quán)限控制,所以準(zhǔn)備對(duì)開(kāi)放的接口全部放行,不做登錄校驗(yàn),需要的朋友可以參考下

利用@PreAuthorize注解自定義權(quán)限校驗(yàn)

使用場(chǎng)景:

由于項(xiàng)目中,需要對(duì)外開(kāi)放接口,要求做請(qǐng)求頭校驗(yàn),不做其他權(quán)限控制.所以準(zhǔn)備對(duì)開(kāi)放的接口全部放行,不做登錄校驗(yàn).想到之前用這個(gè)注解來(lái)實(shí)現(xiàn)管理后臺(tái)的權(quán)限校驗(yàn),所以為了方便在需要對(duì)外開(kāi)放的接口貼上注解即可.記錄一下實(shí)現(xiàn)過(guò)程.

  • 開(kāi)啟@EnableGlobalMethodSecurity(prePostEnabled = true)注解, 在繼承 WebSecurityConfigurerAdapter 這個(gè)類的類上面貼上這個(gè)注解.并且prePostEnabled設(shè)置為true,@PreAuthorize這個(gè)注解才能生效,SpringSecurity默認(rèn)是關(guān)閉注解功能的.
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter implements WebMvcConfigurer {....}
  • 編寫(xiě)自定義的鑒權(quán)方法
// service取名sc是方便注解調(diào)用
@Service("sc")
@Slf4j
public class SginCheckService {

    @Autowired
    private PlatformManageService platformManageService;

    public boolean checkSgin(){
        HttpServletRequest request = UserContextHolder.getHttpServletRequest();
        String appid = request.getHeader("appid");
        String signature = request.getHeader("signature");
        String timestamp = request.getHeader("timestamp");
        //非crm管理平臺(tái)
        PlatformManage platformManage = platformManageService.getOne(Wrappers.<PlatformManage>lambdaQuery().eq(PlatformManage::getSourcetype, appid));
        if (platformManage == null) {
            log.error("平臺(tái)不存在:" + appid);
             //鑒權(quán)失敗拋出自定義異常
            throw new SginCheckException();
        }
        //校驗(yàn)簽名
        String secretKey = platformManage.getPrivateKey();
        MD5 md5 = new MD5();
        String lowerCase = md5.getMD5ofStr(appid + secretKey + timestamp).toLowerCase();
        if (!lowerCase.equals(signature)) {
            log.error("簽名校驗(yàn)失敗:" + "crm:" + lowerCase + ",接口:" + signature);
            //鑒權(quán)失敗拋出自定義異常
            throw new SginCheckException();
        }
        //如果鑒權(quán)成功不return true 會(huì)報(bào)錯(cuò).
        return true;
    }
}
  • 創(chuàng)建自定義異常類
public class SginCheckException extends BaseException {
    public SginCheckException() {
        super();
    }
    public SginCheckException(String message) {
        super(SystemErrorType.SIGNATURE_ERROR,message);
    }
}

  • 在統(tǒng)一異常處理類里面捕獲異常類并做對(duì)應(yīng)處理
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
	/**
     * 簽名失敗拋出異常處理
     *
     * @param e
     * @return
     */
    @ResponseBody
    @ResponseStatus(HttpStatus.UNAUTHORIZED)
    @ExceptionHandler(value = {SginCheckException.class})
    public Result sginCheckException(SginCheckException e) {
        return Result.fail(SystemErrorType.SIGNATURE_ERROR);
    }
}
  • 最后就是在需要鑒權(quán)的接口上貼上注解
	// 調(diào)用方法語(yǔ)法  @beanname.methodname() 
 	@ApiOperation(value = "會(huì)員注冊(cè)", notes = "會(huì)員注冊(cè)", httpMethod = "POST")
    @PostMapping("/register")
    @PreAuthorize("@sc.checkSgin()")
    public Result register(@RequestBody @Valid MemberRegisterParam memberRegisterParam, HttpServletRequest request) {
        log.error("會(huì)員注冊(cè):" + memberRegisterParam);
        return memberService.register(memberRegisterParam, request);
    }

結(jié)束語(yǔ):

當(dāng)然這個(gè)注解還有很多用法.我只是記錄一下我的使用方法.不喜勿噴.

到此這篇關(guān)于Spring的@PreAuthorize注解自定義權(quán)限校驗(yàn)詳解的文章就介紹到這了,更多相關(guān)@PreAuthorize注解自定義權(quán)限校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作詳解

    SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作詳解

    這篇文章主要介紹了SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作步驟,文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Java面試題沖刺第七天--Spring框架1

    Java面試題沖刺第七天--Spring框架1

    這篇文章主要為大家分享了最有價(jià)值的三道Spring框架面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java中HashMap的常見(jiàn)用法詳解

    Java中HashMap的常見(jiàn)用法詳解

    這篇文章主要介紹了Java中HashMap的常見(jiàn)用法詳解,HashMap是Java中的一個(gè)常用子類,它是java.util.HashMap<k,v>集合,實(shí)現(xiàn)了Map<k,v>接口, HashMap可以存儲(chǔ)鍵值對(duì),通過(guò)鍵來(lái)快速訪問(wèn)值,在HashMap中,鍵是唯一的,而值可以重復(fù),需要的朋友可以參考下
    2023-09-09
  • 淺談java二進(jìn)制、十進(jìn)制、十六進(jìn)制、字符串之間的相互轉(zhuǎn)換

    淺談java二進(jìn)制、十進(jìn)制、十六進(jìn)制、字符串之間的相互轉(zhuǎn)換

    下面小編就為大家?guī)?lái)一篇淺談二進(jìn)制、十進(jìn)制、十六進(jìn)制、字符串之間的相互轉(zhuǎn)換。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • java算法題解LeetCode30包含min函數(shù)的棧實(shí)例

    java算法題解LeetCode30包含min函數(shù)的棧實(shí)例

    這篇文章主要為大家介紹了java算法題解LeetCode30包含min函數(shù)的棧實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Spring File Storage文件的對(duì)象存儲(chǔ)框架基本使用小結(jié)

    Spring File Storage文件的對(duì)象存儲(chǔ)框架基本使用小結(jié)

    在開(kāi)發(fā)過(guò)程當(dāng)中,會(huì)使用到存文檔、圖片、視頻、音頻等等,這些都會(huì)涉及存儲(chǔ)的問(wèn)題,文件可以直接存服務(wù)器,但需要考慮帶寬和存儲(chǔ)空間,另外一種方式就是使用云存儲(chǔ),這篇文章主要介紹了Spring File Storage文件的對(duì)象存儲(chǔ)框架基本使用小結(jié),需要的朋友可以參考下
    2024-08-08
  • Java實(shí)現(xiàn)高效隨機(jī)數(shù)算法的示例代碼

    Java實(shí)現(xiàn)高效隨機(jī)數(shù)算法的示例代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)高效隨機(jī)數(shù)算法的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Java超全面梳理內(nèi)部類的使用

    Java超全面梳理內(nèi)部類的使用

    說(shuō)起內(nèi)部類這個(gè)詞,想必很多人都不陌生,但是又會(huì)覺(jué)得不熟悉。原因是平時(shí)編寫(xiě)代碼時(shí)可能用到的場(chǎng)景不多,用得最多的是在有事件監(jiān)聽(tīng)的情況下,并且即使用到也很少去總結(jié)內(nèi)部類的用法。今天我們就來(lái)一探究竟
    2022-04-04
  • Spring框架核心概念小結(jié)

    Spring框架核心概念小結(jié)

    Spring是企業(yè)級(jí)Java的開(kāi)源開(kāi)發(fā)框架。Spring框架的核心功能可用于開(kāi)發(fā)任何java應(yīng)用程序,本文重點(diǎn)給大家介紹Spring框架核心概念總覽,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • SpringBoot實(shí)現(xiàn)微信小程序支付功能

    SpringBoot實(shí)現(xiàn)微信小程序支付功能

    小程序支付功能已成為眾多應(yīng)用的核心需求之一,本文主要介紹了SpringBoot實(shí)現(xiàn)微信小程序支付功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04

最新評(píng)論