找回密码
 立即注册
首页 业界区 安全 使用XXL-SSO实现登录认证以及权限管控

使用XXL-SSO实现登录认证以及权限管控

决台 2025-9-28 16:45:07
本文指导如何使用 XXL-SSO 与实现 登录认证以及权限管控;通过实际项目(XXL-BOOT/快速开发平台)集成应用,进行详细讲解。
1.png

XXL-SSO简介

XXL-SSO 是一个 单点登录框架,只需要登录一次就可以访问所有相互信任的应用系统。具备 “轻量级、高扩展、渐进式” 的等特性,支持 “登录认证、权限认证、角色认证、分布式会话认证、单点登录、Web常规登录、前后端分离” 等多登录及认证类型,现已开放源代码,开箱即用。

  • 中文文档:https://www.xuxueli.com/xxl-sso/
  • Github:https://github.com/xuxueli/xxl-sso
2.png

XXL-BOOT简介

XXL-BOOT 是一个快速开发平台,易学易用、灵活扩展、开箱即用。内置安全登录、权限管控、端到端代码生成、响应式布局、多语言、通告触达……等能力。整合前后端流行技术,致力为 中小企业、个人开发者 打造开箱即用的中后台解决方案。

  • 中文文档:https://www.xuxueli.com/xxl-boot/
  • Github:https://github.com/xuxueli/xxl-boot
XXL-SSO集成

补充说明:XXL-SSO 是一个 “渐进式” 登录及权限认证框架,从简单到复杂场景均提供支持,包括:单体系统、前后端分离、分布式系统、单点登录等。本文以“XXL-BOOT”项目集成讲解“单体系统”如何集成使用,更复杂场景建议参考官方文档以及提供Sample集成示例。
第一步:引入maven依赖
  1. <dependency>
  2.     <groupId>com.xuxueli</groupId>
  3.     xxl-sso-core</artifactId>
  4.     <version>${xxl-sso.version}</version>
  5. </dependency>
复制代码
第二步:XXL-SSO组件配置
配置文件:更详细配置可参考项目文档。
  1. ### xxl-sso 登录凭证/token传输key, 用于cookie、header登录凭证传输;
  2. xxl-sso.token.key=xxl_sso_token
  3. ### xxl-sso 登录凭证/token超时时间,单位毫秒;
  4. xxl-sso.token.timeout=604800000
  5. ### xxl-sso 客户端过滤排除路径,如 "/excluded/xpath"?"/excluded/xpath,/excluded/*"
  6. xxl-sso.client.excluded.paths=
  7. ### xxl-sso 客户端登录页路径
  8. xxl.sso.client.login.path=/auth/login
复制代码
组件配置:主要进行 “拦截器注册” 以及基础框架组件初始化。
  1. /**
  2. * 1、配置 XxlSsoBootstrap
  3. */
  4. @Bean(initMethod = "start", destroyMethod = "stop")
  5. public XxlSsoBootstrap xxlSsoBootstrap() {
  6.     XxlSsoBootstrap bootstrap = new XxlSsoBootstrap();
  7.     bootstrap.setLoginStore(loginStore);
  8.     bootstrap.setTokenKey(tokenKey);
  9.     bootstrap.setTokenTimeout(tokenTimeout);
  10.     return bootstrap;
  11. }
  12. /**
  13. * 2、配置 XxlSso 拦截器
  14. */
  15. @Override
  16. public void addInterceptors(InterceptorRegistry registry) {
  17.     // 2.1、build xxl-sso interceptor
  18.     XxlSsoWebInterceptor webInterceptor = new XxlSsoWebInterceptor(excludedPaths, loginPath);
  19.     // 2.2、add interceptor
  20.     registry.addInterceptor(webInterceptor).addPathPatterns("/**");
  21. }
复制代码
第三步:登录/注销 功能集成

XXl-SSO提供丰富的登录、注销、登录态、角色/权限验证相关API。此处通过 “XxlSsoHelper.loginWithCookie、XxlSsoHelper.logoutWithCookie” 等API实现集成。
登录接口:
  1. @RequestMapping(value="/doLogin", method=RequestMethod.POST)
  2. @ResponseBody
  3. @XxlSso(login=false)
  4. public Response<String> doLogin(HttpServletRequest request, HttpServletResponse response, String userName, String password, String ifRemember){
  5.     // 登录验证操作
  6.     ...
  7.         
  8.     // XXL-SSO 登录
  9.     LoginInfo loginInfo = new LoginInfo(String.valueOf(xxlBootUser.getId()), UUIDTool.getSimpleUUID());
  10.     return XxlSsoHelper.loginWithCookie(loginInfo, response, ifRem);
  11. }
复制代码
注销接口:
  1. @RequestMapping(value="/logout", method=RequestMethod.POST)
  2. @ResponseBody
  3. @XxlSso(login=false)
  4. public Response<String> logout(HttpServletRequest request, HttpServletResponse response){
  5.     // XXL-SSO 注销
  6.     return XxlSsoHelper.logoutWithCookie(request, response);
  7. }
复制代码
第四步:XXL-SSO 接入使用 ( 集成RBAC 权限系统)

接入 XXL-SSO 之后,业务可通过 注解 or API 进行 登录验证、权限验证。一行注解/代码即可实现 登录认证、权限认证、角色认证 等,接入灵活方便;此处以 “注解方式” + “RBAC权限” 结合方式讲解(XXL-BOOT项目应用方式)。

  • XXL- SSO 接入管控 (认证 & 权限校验)
通过 “@XxlSso” 注解支持,提供“login、permission、role”等属性,用于控制登录认证、角色/权限认证等。
以如下接口为例,限制操作用户:必须登录,且拥有 “org:user” 权限。
  1. @RequestMapping("/update")
  2. @ResponseBody
  3. @XxlSso(permission = "org:user")
  4. public Response<String> update(HttpServletRequest request, HttpServletResponse response, XxlBootUserDTO xxlJobUser) {
  5.     // xxl-sso “登录验证 + 权限验证”通过,获取登录用户信息
  6.     Response<LoginInfo> loginInfoResponse = XxlSsoHelper.loginCheckWithCookie(request, response);
  7.     ...
  8. }
复制代码

  • 用户权限动态(RBAC)控制:
XXL-BOOT内置基于RBAC权限管理能力,针对用户拥有的角色/权限进行动态管理。
3.png

更多可参考 XXL-SSO 与 XXL-BOOT 官方文档与Sample项目代码示例。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册