1.文章内容简介

文章对Ruoyi-Vue项目中后端的SpringSecurity安全框架的使用进行了解析

2.关键的实现类

2.1SysUserServiceImpl类

这个类主要的工作是进行SysUser信息的相关操作,查询、删除、更新等。

2.2SysPermissionService类

这个类主要的工作是进行用户权限的查询操作

2.3UserDetailServiceImpl、LoginUser类的实现

使用SpringSecurity自定义登录逻辑,都需要实现UserDetailService类,并在loginUserByUsername方法中调用SysUserServiceImplSysPermissionService返回一个实现了UserDetail的实体类(封装用户信息)。

SpringSecurity之Ruoyi实现 - 图1看不懂?上代码

  1. @Service
  2. public class UserDetailsServiceImpl implements UserDetailsService
  3. {
  4. @Autowired
  5. private SysUserService userService;
  6. @Autowired
  7. private SysPermissionService permissionService;
  8. @Override
  9. public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
  10. {
  11. SysUser user = userService.selectUserByUserName(username);
  12. SysPermission permission=permissionService.getMenuPermission(user)
  13. return new LoginUser(user,permission);
  14. }
  15. }

2.4TokenService类

TokenService 用于JWT令牌的生成、检验等工作

2.5JwtAuthenticationTokenFilter类

JwtAuthenticationTokenFilter 放在SpringSecurity过滤链中的UserNamePasswordAuthenticaitonFilter之前,对含有jwt令牌的请求信息进行登录信息的获取。使用TokenService通过jwt获取用户登录信息 SpringSecurity之Ruoyi实现 - 图2

2.6AuthenticationEntryPointImpl类

AuthenticationEntryPointImpl类设置认证失败后或者没有权限访问接口时返回的错误信息

2.7SysLoginController、SysLoginService类

SysLoginController类会调用SysLoginService,SysLoginServcie会通过AuthenticationManager对用户信息进行认证,AuthenticationManager会调用UserDetailsServiceImpl类(2.3中的类)查询数据库完成用户的身份认证。最后使用TokenService生成JWT令牌并返回。

SpringSecurity之Ruoyi实现 - 图3

3.RuoYi登录流程形象化描述

image.png