返回顶部
首页 > 资讯 > 数据库 >数据库动态认证封装用户的代码怎么写
  • 720
分享到

数据库动态认证封装用户的代码怎么写

数据库 2023-02-15 15:02:35 720人浏览 安东尼
摘要

本篇内容介绍了“数据库动态认证封装用户的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码实现

本篇内容介绍了“数据库动态认证封装用户的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

代码实现


public abstract class AbstractUserDetailsService implements UserDetailsService {

    @Autowired
    private SysPermissionService sysPermissionService;

    
    public abstract SysUser findSysUser(String usernameORMobile);

    @Override
    public UserDetails loadUserByUsername(String usernameOrMobile) throws UsernameNotFoundException {
        // 1. 通过请求的用户名去数据库中查询用户信息
        SysUser sysUser = findSysUser(usernameOrMobile);
        // 通过用户id去获取权限信息
        findSysPermission(sysUser);
        return sysUser;
    }

    // 私有的方法,里面放到时重复的代码
    private void findSysPermission(SysUser sysUser) {
        // 判断该用户是否存在
        if(sysUser == null) {
            throw new UsernameNotFoundException("用户名或密码错误");
        }
        // 2. 查询该用户有哪一些权限
        List<SysPermission> permissions = sysPermissionService.findByUserId(sysUser.getId());
        // 判断该用户拥有的权限是否为空
        if(CollectionUtils.isEmpty(permissions)) {
            return ;
        }
        // 将权限设置到该对象中
        sysUser.setPermissions(permissions);
        // 3. 封装权限信息
        List<GrantedAuthority> authorities = Lists.newArrayList();
        for(SysPermission sp: permissions) {
            // 获取权限标识
            String code = sp.getCode();
            authorities.add(new SimpleGrantedAuthority(code));
        }
        // 不需要return,因为是同一个对象
        sysUser.setAuthorities(authorities);
    }

}


@Component("customUserDetailsService")
//public class CustomUserDetailsService implements UserDetailsService {
public class CustomUserDetailsService extends AbstractUserDetailsService {
    Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    PassWordEncoder passwordEncoder;

    @Autowired
    SysUserService sysUserService;

    @Override
    public SysUser findSysUser(String usernameOrMobile) {
        logger.info("请求认证的用户名: " + usernameOrMobile);
        // 1. 通过请求的用户名去数据库中查询用户信息
        return sysUserService.findByUsername(usernameOrMobile);
    }

}

@Component("mobileUserDetailsService") 
public class MobileUserDetailsService extends AbstractUserDetailsService {

    Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    SysUserService sysUserService;

    @Override
    public SysUser findSysUser(String usernameOrMobile) {
        logger.info("请求的手机号是:" + usernameOrMobile);
        // 1. 通过手机号查询用户信息
        return sysUserService.findByMobile(usernameOrMobile);
    }

}
  • 注意点

# 抽象类和子类中必须包含如下代码,不能删除,且抽象类和子类中只能有1个类包含该代码
@Autowired 
PasswordEncoder passwordEncoder;

“数据库动态认证封装用户的代码怎么写”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: 数据库动态认证封装用户的代码怎么写

本文链接: https://lsjlt.com/news/196213.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 数据库动态认证封装用户的代码怎么写
    本篇内容介绍了“数据库动态认证封装用户的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码实现 ...
    99+
    2023-02-15
    数据库
  • oracle数据库怎么写代码
    要使用 oracle 数据库编写代码,需要遵循以下步骤:1. 安装 oracle 数据库管理系统 (dbms) 和集成开发环境 (ide)。2. 创建数据库连接。3. 使用 sql 编写...
    99+
    2024-04-19
    oracle python c++
  • Selenium + Firefox怎么用带用户名密码认证的HTTP代理
    小编给大家分享一下Selenium + Firefox怎么用带用户名密码认证的HTTP代理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!熟悉Firefox的同学都...
    99+
    2023-06-02
  • ftp实现通过数据库的虚拟用户认证
    一、安装所需要程序1.安装ftp服务所需的软件包[root@fsy-Centos6 ~]# yum install vsftpd2.安装MySQL数据库:[root@fsy-Centos6 ~]# yum ...
    99+
    2024-04-02
  • vb.net连接数据库的代码怎么写
    以下是使用VB.NET连接数据库的基本代码示例:1. 首先需要在程序中引用 System.Data.SqlClient 命名空间。2...
    99+
    2023-06-04
    vb.net连接数据库 数据库
  • mysql创建数据库的代码怎么写
    要在MySQL中创建一个数据库,可以使用以下SQL语句: CREATE DATABASE `数据库名`; 例如,要在MySQL中创...
    99+
    2024-03-02
    mysql 数据库
  • mongodb创建数据库代码怎么写
    在MongoDB中,可以使用以下代码来创建数据库:```javascript// 引入MongoDB驱动程序const MongoC...
    99+
    2023-08-24
    mongodb 数据库
  • 微信小程序封装reu的代码怎么写
    本篇内容介绍了“微信小程序封装reu的代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!微信小程序封装reu的代码//封装aJaxva...
    99+
    2023-06-26
  • until封装watch常用逻辑简化代码怎么写
    这篇文章主要介绍“until封装watch常用逻辑简化代码怎么写”,在日常操作中,相信很多人在until封装watch常用逻辑简化代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”until封装watc...
    99+
    2023-07-02
  • Python读取Hive数据库代码怎么写
    今天小编给大家分享一下Python读取Hive数据库代码怎么写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实际业务读取hi...
    99+
    2023-07-05
  • vue+elementUI封装一个根据后端变化的动态table(完整代码)
    实现了自动生成和插槽两个方式,主要把 el-table 和el-pagination封装在一起 效果图: 使用组件,启用自动生成 :auto="true" 自...
    99+
    2024-04-02
  • JavaScript实现拖动模态框的代码怎么写
    这篇文章主要介绍“JavaScript实现拖动模态框的代码怎么写”,在日常操作中,相信很多人在JavaScript实现拖动模态框的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript实...
    99+
    2023-07-02
  • 使用ajax怎么动态查询数据库数据
    今天就跟大家聊聊有关使用ajax怎么动态查询数据库数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Controller层查询总用户数 @RequestMapping(va...
    99+
    2023-06-08
  • phpmyadmin数据库管理工具的默认用户名和密码默认是什么
    小编给大家分享一下phpmyadmin数据库管理工具的默认用户名和密码默认是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!p...
    99+
    2024-04-02
  • 使用ajax怎么动态获取数据库中的数据
    使用ajax怎么动态获取数据库中的数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先我这用的框架是SSM,代码就开始了:这是写在前台的方法里一个点击事件进入...
    99+
    2023-06-08
  • php怎么封装数据库增删改的类
    随着web应用程序的发展,对于数据库管理的需求也越来越高。作为一名php程序员,如何优化执行增删改查的操作,是必须要解决的问题。而这个问题的解决,可以通过php封装数据库增删改的类来解决。1.为什么需要封装数据库类?通常情况下,在进行数据库...
    99+
    2023-05-14
    php
  • php怎么封装一个数据库查询的函数
    这篇文章主要介绍“php怎么封装一个数据库查询的函数”,在日常操作中,相信很多人在php怎么封装一个数据库查询的函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php怎么封装一个数据库查询的函数”的疑惑有所...
    99+
    2023-07-05
  • vertica数据库copy命令是实现数据加载的代码怎么写
    vertica数据库copy命令是实现数据加载的代码怎么写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。vertica数据加载创建外部数据文本:[dbadmin...
    99+
    2023-06-02
  • navicat怎么用代码创建数据库
    可以使用 navicat 中的 sql 代码创建数据库,具体步骤包括:连接到数据库服务器。打开 sql 查询窗口。编写创建数据库代码,格式为:create database 数据库名称;...
    99+
    2024-04-23
    navicat
  • MySQL创建数据表的代码怎么写
    MySQL创建数据表的代码写法如下: CREATE TABLE table_name ( column1 datatype ...
    99+
    2024-04-09
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作