正如我们在上一篇文章中所看到的,我们的spring应用程序的用户名和密码是通过环境变量配置的。 这对于原型目的是可以的,但是在现实生活中,我们必须提供另一种方式来使用户有资格登录到该应用程序。 为此,我们使用UserDetailsS​​ervice接口。

用户详细信息服务带有loadUserByUsername函数。 loadUserByUsername根据用户名查找用户。 搜索结果(如果存在)然后使用通过UserDetailsS​​ervice检索的用户信息来验证通过登录表单提供的凭据。

因此,让我们从一个非常简单的自定义用户详细信息服务开始。

@Service
public class UserDetailsServiceImpl implements UserDetailsService {@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {if(username.equals("test")) {return User.withDefaultPasswordEncoder().username("test").password("test").roles("test").build();} else {return null;}}
}

如您所见,唯一能够登录的用户是使用用户名test的用户。 当涉及到用户详细信息时,spring也为我们提供了一个构建器。 作为密码编码器,我们指定了默认密码编码器,它实际上是一种编码器,因为我们提供了密码明文,所以它根本不进行密码哈希处理。

尽管密码编码器将在另一篇教程中介绍,但最好还是提醒您,出于安全原因, 始终对存储在数据库中的密码进行哈希处理。

现在,您需要添加任何其他信息吗? 好吧 在您的Spring上下文中,仅具有一个实现UserDetailsS​​ervice的bean就足够了。 Spring安全将选择您提供的UserDetailsS​​ervice实现,并将其用于身份验证。

例如,您甚至可以使用@Bean配置来提供UserDetailsS​​ervice。

@Configuration
public class SecurityConfig {@Beanpublic UserDetailsService createUserDetailsService() {return new UserDetailsServiceImpl();}}

通过这种方式,无论您的用户信息存储在sql数据库,nosql数据库还是csv文件中,您唯一要做的就是在loadUserByUsername中加载用户并通过创建一个UserDetails对象。

翻译自: https://www.javacodegeeks.com/2018/05/spring-security-with-spring-boot-2-0-userdetailsservice.html

带有Spring Boot 2.0的Spring Security:UserDetailsS​​ervice相关推荐

  1. Spring Boot 2.0 with Spring 5 Kotlin support and Spring WebFlux functional

    Spring Boot 2.0 with Spring 5 Kotlin support and Spring WebFlux functional

  2. Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式1

    0. 前言 之前帐号认证用过自己写的进行匹配,现在要学会使用标准了.准备了解和使用这个OAuth2.0协议. 1. 配置 1.1 配置pom.xml 有些可能会用不到,我把我项目中用到的所有包都贴出来 ...

  3. Spring Boot 1.0和Spring Boot 1.0.1错误修复版本

    Spring Boot团队最近宣布了Spring Boot 1.0版本 ,随后是Spring Boot 1.0.1.RELEASE ,这是一个错误修复版本,其中还包含一些新功能. Spring Boo ...

  4. spring boot 2.0.3+spring cloud (Finchley)6、配置中心Spring Cloud Config

    https://www.cnblogs.com/cralor/p/9239976.html Spring Cloud Config 是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, ...

  5. 使用Spring Boot 2.0的Spring Security:保护端点

    到目前为止,在以前的文章中,我们已经使用默认的spring安全配置对端点和控制器进行了安全保护. 当Spring Security在类路径上时,默认情况下自动配置会保护所有端点. 当涉及到复杂的应用程 ...

  6. Spring Boot 2.0 都更新了什么

    Spring Boot 2.0 都更新了什么 2018 年 3 月 1 号 Spring Boot 2.0.0.RELEASE 正式发布,这是 Spring Boot 1.0 发布 4 年之后第一次重 ...

  7. Spring Boot 3.0 抢先了解:aot.factories 是个啥?

    今天带大家深入源码来看看Spring Boot 3.0 中的一个大变化:新增的 Graalvm aot 支持. 一.Spring core Spring framework 6.0 中 Spring ...

  8. Spring Security with Spring Boot 2.0:使用Servlet堆栈的简单身份验证

    Spring安全性是一个很好的框架,可节省开发人员的大量时间和精力. 此外,它还具有足够的灵活性,可以自定义并满足您的需求. 随着spring的发展,spring安全性也使得在项目中设置安全性变得更加 ...

  9. Spring Boot 3.0.0-M1 Reference Documentation(Spring Boot中文参考文档) 9-16

    9. 数据 Spring Boot与多个数据技术集成,包括SQL和NoSQL. 9.1. SQL数据库 Spring Framework提供扩展支持用于与SQL数据工作,从使用JdbcTemplate ...

最新文章

  1. 3DSlicer26:Add Extension/Module filepath,no module named ...
  2. 什么是光纤通道交换机(FC SWITCH)
  3. 走近分形与混沌(part2)-豪斯多夫维数
  4. springaop事务逻辑原理_搞懂Spring AOP,这一篇就够了
  5. 《『若水新闻』客户端开发教程》——13.代码编写(5)
  6. 一个完整的软件项目开发流程
  7. iapp软件库源码分享
  8. url转码解码工具类
  9. oracle数据库imp命令,数据库imp导入命令
  10. CCF NOIP2018复赛提高组一等奖获奖名单
  11. Python学习笔记 使用matplotlib创建Gif动图
  12. 鸿蒙系统如何设置字体,图解鸿蒙OS独特的字体系统!
  13. oracle 范鑫_快速理解数据库中的索引(Indexes in Database)
  14. iGrimaceV8 V8在线威锋源apt.so/tuzhurenv8手机直接下载安装教程图:
  15. iOS开发 触觉体验(UIFeedbackGenerator)的使用
  16. __DSB()指令的作用
  17. 孙空空的Vue之路-Day03-Class与Style的绑定操作
  18. 乌镇互联网大会:大佬们都爱AI
  19. 针对Intel芯片mac、win平台对cpu功耗、频率、电源等信息检测
  20. 市面上有哪些免费堡垒机品牌?好用吗?

热门文章

  1. 北京区域赛I题,Uva7676,A Boring Problem,前缀和差分
  2. art-template入门(一)之介绍
  3. Vue.js2.0开发环境搭建(二)
  4. 浅析SAX,DOM,JAXP,JDOM与DOM4J之间的关系
  5. Java 8新特性探究(二)深入解析默认方法
  6. 类、变量、块、构造器、继承初始化顺序,终极解答
  7. 你们好好的学,回头教教我~
  8. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——struts.xml配置详情
  9. Android public class MyApplication extends MultiDexApplication使用
  10. mysql group和order_mysql 用 group by 和 order by同时使用