From 10b6e8ac9b48e4aaeb202bc90e5b9bb9bf99e416 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sun, 23 Oct 2022 18:52:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B8=B8=E8=A7=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=8E=92=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/more/common-questions.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sa-token-doc/more/common-questions.md b/sa-token-doc/more/common-questions.md index a74367cd..7be53701 100644 --- a/sa-token-doc/more/common-questions.md +++ b/sa-token-doc/more/common-questions.md @@ -177,6 +177,27 @@ sa-token: ``` +### Q:我自定义了组件,但是好像没有生效? +1、情况1是可能组件没有注入成功,排查方法为在 main 里打印这个组件,是否为自定义的class限定名: +``` java +@SpringBootApplication +public class SaTokenApplication { + public static void main(String[] args) { + SpringApplication.run(SaTokenApplication.class, args); + System.out.println(SaManager.getStpInterface()); // 打印全局的 StpInterface 实现类 + } +} +``` +如果打印出的是你的自定义实现类,则证明注入成功,如果不是,则证明没有注入成功,请排查: +- 自定义的组件实现类上是否加上了 `@Component` 注解,只有加上这个注解,组件才会被 Spring 自动实例化并注入。 +- 自定义的组件实现类是否在启动类的同目录或者子目录上,如果不在则无法被 springboot 启动时扫描,扫描不到也就无法注入。 +- 启动类上是否加了 `@ComponentScan` 注解,导致包扫描范围不正确,请将此注解删除或移动到其它配置类上。 + +2、情况2是,这个组件注入成功了,但是还没到执行时机,比如 `StpInterface` 组件,只有在鉴权时才会触发,如果你的代码仅仅是登录校验,就不会执行到这个组件。 + + + + ### Q:有时候我不加 Token 也可以通过鉴权,请问是怎么回事? - 可能1:你访问的这个接口,根本就没有鉴权的代码,所以可以安全的访问通过。 - 可能2:可能是 Cookie 帮你自动提交了 Token,在浏览器或 Postman 中会自动维护Cookie模式,如不需要可以在配置文件:`is-read-cookie: false`,然后重启项目再测试一下。