From 5f9193095ef5589dfc4952aa86e51eb97da8efe6 Mon Sep 17 00:00:00 2001 From: RockMan <985449475@qq.com> Date: Wed, 13 Jan 2021 09:42:12 +0800 Subject: [PATCH] =?UTF-8?q?update=20sa-token-doc/doc/use/route-check.md.?= =?UTF-8?q?=20=E5=AE=8C=E5=96=84=E6=96=B0=E5=A2=9E=E7=89=B9=E6=80=A7?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/doc/use/route-check.md | 56 +++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/sa-token-doc/doc/use/route-check.md b/sa-token-doc/doc/use/route-check.md index 2ff9cd68..b780143f 100644 --- a/sa-token-doc/doc/use/route-check.md +++ b/sa-token-doc/doc/use/route-check.md @@ -56,9 +56,59 @@ public class MySaTokenConfig implements WebMvcConfigurer { - - - +## 3、让我们利用自定义拦截器做点快活的事情 +你可以根据路由划分模块,不同模块不同鉴权 + +``` java +@Configuration +public class MySaTokenConfig implements WebMvcConfigurer { + // 注册sa-token的所有拦截器 + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 根据路由划分模块,不同模块不同鉴权 + registry.addInterceptor(new SaRouteInterceptor((request, response, handler)->{ + SaRouterUtil.match("/user/**", () -> StpUtil.checkPermission("user")); + SaRouterUtil.match("/admin/**", () -> StpUtil.checkPermission("admin")); + SaRouterUtil.match("/goods/**", () -> StpUtil.checkPermission("goods")); + SaRouterUtil.match("/orders/**", () -> StpUtil.checkPermission("orders")); + SaRouterUtil.match("/notice/**", () -> StpUtil.checkPermission("notice")); + SaRouterUtil.match("/comment/**", () -> StpUtil.checkPermission("comment")); + })).addPathPatterns("/**"); + } +} +``` + + +## 4、完整的示例 +最终的代码,可能会类似于下面的样子: + +``` java +@Configuration +public class MySaTokenConfig implements WebMvcConfigurer { + // 注册sa-token的拦截器 + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 自定义验证拦截器 + registry.addInterceptor(new SaRouteInterceptor((request, response, handler) -> { + + // 登录验证 -- 拦截所有路由,并排除/user/doLogin 用于开放登录 + SaRouterUtil.match("/**", "/user/doLogin", () -> StpUtil.checkLogin()); + + // 角色认证 -- 以/admin/** 开头的路由,必须具备[admin]角色或者[super-admin]角色才可以通过认证 + SaRouterUtil.match("/admin/**", () -> StpUtil.checkRoleOr("admin", "super-admin")); + + // 权限认证 -- 不同模块, 校验不同权限 + SaRouterUtil.match("/user/**", () -> StpUtil.checkPermission("user")); + SaRouterUtil.match("/admin/**", () -> StpUtil.checkPermission("admin")); + SaRouterUtil.match("/goods/**", () -> StpUtil.checkPermission("goods")); + SaRouterUtil.match("/orders/**", () -> StpUtil.checkPermission("orders")); + SaRouterUtil.match("/notice/**", () -> StpUtil.checkPermission("notice")); + SaRouterUtil.match("/comment/**", () -> StpUtil.checkPermission("comment")); + + })).addPathPatterns("/**"); + } +} +```