diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java index 921dd386..8652619b 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java @@ -61,11 +61,18 @@ public @interface SaCheckOr { SaCheckSafe[] safe() default {}; /** - * 设定 @SaCheckBasic,参考 {@link SaCheckHttpBasic} + * 设定 @SaCheckHttpBasic,参考 {@link SaCheckHttpBasic} * * @return / */ - SaCheckHttpBasic[] basic() default {}; + SaCheckHttpBasic[] httpBasic() default {}; + + /** + * 设定 @SaCheckBasic,参考 {@link SaCheckHttpDigest} + * + * @return / + */ + SaCheckHttpDigest[] httpDigest() default {}; /** * 设定 @SaCheckDisable,参考 {@link SaCheckDisable} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java index cb1e47c2..df89ae7e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java @@ -17,10 +17,10 @@ package cn.dev33.satoken.strategy; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.annotation.*; -import cn.dev33.satoken.httpauth.basic.SaHttpBasicUtil; import cn.dev33.satoken.exception.RequestPathInvalidException; import cn.dev33.satoken.exception.SaTokenException; import cn.dev33.satoken.fun.strategy.*; +import cn.dev33.satoken.httpauth.basic.SaHttpBasicUtil; import cn.dev33.satoken.httpauth.digest.SaHttpDigestUtil; import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.stp.StpLogic; @@ -265,8 +265,8 @@ public final class SaStrategy { } // 6、校验注解:@SaCheckBasic - SaCheckHttpBasic[] checkBasicArray = at.basic(); - for (SaCheckHttpBasic item : checkBasicArray) { + SaCheckHttpBasic[] checkHttpBasicArray = at.httpBasic(); + for (SaCheckHttpBasic item : checkHttpBasicArray) { try { SaHttpBasicUtil.check(item.realm(), item.account()); return; @@ -275,6 +275,17 @@ public final class SaStrategy { } } + // 7、校验注解:@SaCheckDigest + SaCheckHttpDigest[] checkHttpDigestArray = at.httpDigest(); + for (SaCheckHttpDigest item : checkHttpDigestArray) { + try { + SaHttpDigestUtil.checkByAnnotation(item); + return; + } catch (SaTokenException e) { + errorList.add(e); + } + } + // 如果执行到这里,有两种可能: // 可能 1. SaCheckOr 注解上不包含任何注解校验,此时 errorList 里面一个异常都没有,我们直接跳过即可 // 可能 2. 所有注解校验都通过不了,此时 errorList 里面会有多个异常,我们随便抛出一个即可