返回顶部
首页 > 资讯 > 精选 >Spring Security怎么使用
  • 727
分享到

Spring Security怎么使用

2023-06-30 15:06:23 727人浏览 泡泡鱼
摘要

这篇文章主要介绍“spring Security怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Security怎么使用”文章能帮助大家解决问题。Spring

这篇文章主要介绍“spring Security怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Security怎么使用”文章能帮助大家解决问题。

    Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架, 提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤器链,不同的功能经由不同的过滤器。 

    1.引入依赖

    项目中引入Spring Security依赖,代码如下:

            <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-security</artifactId>        </dependency>

    引入依赖后,整个项目都被Spring Security保护起来,所有的接口都要登录之后才能访问了,例如,我需要访问/doc.html接口文档,直接跳到登录页面。如下图:

    Spring Security怎么使用

    这时,你会有十万个为什么啦?这个页面哪里的?这个用户名和密码是啥?等等。不着急,听我一一道来。

    2.用户名和密码在哪里设置

    当我们引入了Spring Secruity依赖后,启动项目之后,密码就会在控制台中输出的,格式是UUID,每一次启动密码都不一样的,而用户名是默认是User的。

    Using generated security passWord: 8b2d752b-8892-4cd3-a7a9-a36e79e1cad8

    我们可以通过项目的配置文件自定义用户名和密码的,代码如下,这样每次重启项目,用户名和密码都是固定不变的。

    spring:  security:      user:        name: didiplus        password: didiplus

    3.UserDetailsService接口详解

    UserDetailsService接口只有一个抽象方法就是loadUserByUsername(String username)。代码如下:

    public interface UserDetailsService {UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;}

    UserDetailsService接口的返回值是UserDetails接口, 这又是一个接口,Spring Security框架提供了它的实现类org.springframework.security.core.userdetails包下的User类对象 。userdetails源码如下:

    Spring Security怎么使用

    Spring Security提供了三个UserDetailsService接口的实现类,分别是CachingUserDetailsServiceJdbcDaoImplInMemoryUserDetailsManager

    3.1JdbcDaoImpl实现类

    Spring Security怎么使用

    该实现类是通过数据库获取用户名和密码,JdbcUserDetailsManager中定义了一大堆sql语句,如下:

    Spring Security怎么使用

    接着我们在看一下JdbcDaoImpl中的loadUsersByUsername方法,如下:

    Spring Security怎么使用

    3.2InMemoryUserDetailsManager实现类

    Spring Security怎么使用

    以上代码是判断内存中的HashMap集合中是否有用户数据对应的User对象,如果没有,直接抛出异常,如果有就返回该用户的User对象信息。

    Spring Security怎么使用

    以上代码是把配置文件中的User相关信息读取到。通过分析源码发现 Spring Security框架完成用户登录认证的核心就在与org.springframework.security.core.userdetails包下的UserDetailsService接口。

    3.3自定义实现类实现UserDetailsService接口

    自定义实现类MyUserDetailsServiceImpl,代码如下:

    @Servicepublic class MyUserDetailsServiceImpl implements UserDetailsService {    private static  final  String USERNAME="admin";    private static  final  String PASSWORD="admin123";     @Override    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {        if (!USERNAME.equals(username)){            throw new UsernameNotFoundException("用户名不存在");        }        UserDetails userDetails =  new User(USERNAME,PASSWORD, AuthorityUtils.commaSeparatedStringToAuthorityList("admin,common"));        return userDetails;    }}

    重启项目看看,输入定义的用户名和密码,发现登录不了,查看控制台发现报错,提示如下:

    Spring Security怎么使用

    报错的原因是没有使用任何的PasswordEncoder,我们输入的密码没有用加密工具进行加密 。 Spring Security其实已经给我们提供了很多的PasswordEncoder 。 在org.springframework.security.crypto.password包下有一个PasswordEncoder接口,看看他的实现类

    Spring Security怎么使用

    把这个PasswordEncoder的任意一个我们需要用来加密密码的实现类的Bean注入到容器里面,就可以直接拿来使用 ,代码如下:

    @Configurationpublic class SecurityConfig extends WEBSecurityConfigurerAdapter {    @Bean    public BCryptPasswordEncoder bCryptPasswordEncoder(){        return new BCryptPasswordEncoder();    }}

    修改MyUserDetailsServiceImpl类如下:

    @Servicepublic class MyUserDetailsServiceImpl implements UserDetailsService {    private static  final  String USERNAME="admin";    private static  final  String PASSWORD="admin123";    @Resource    BCryptPasswordEncoder cryptPasswordEncoder;    @Override    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {        if (!USERNAME.equals(username)){            throw new UsernameNotFoundException("用户名不存在");        }        UserDetails userDetails =  new User(USERNAME,cryptPasswordEncoder.encode(PASSWORD), AuthorityUtils.commaSeparatedStringToAuthorityList("admin,common"));        return userDetails;    }}

    重启项目再次测试,输入定义的账号和密码。即可访问到接口文档页面。

    Spring Security怎么使用

    4.如何修改登录页面

    觉得默认的登录页面很丑,我们如何定义自己的登录页面呢?方法也很简单,首先我们先去准备一个登录页面。如下:

    Spring Security怎么使用

    前端代码如下:

    <fORM action="/login" class="login-form" >    <h2>登录</h2>    <div class="txtb">        <input type="text" name="user">        <span data-placeholder="Username"></span>    </div>    <div class="txtb">        <input type="password" name="pass">        <span data-placeholder="Password"></span>    </div>    <input type="submit" class="logbtn" value="登录">    <div class="bottom-text">        Don't have account? <a href="#" rel="external nofollow" >Sign up</a>    </div></form>

    把登录页面文件存放到项目的资源文件夹中static目录下,然后在SecurityConfig重写configure(httpsecurity Http)这个方法,代码如下:

        @Override    protected void configure(HttpSecurity http) throws Exception {        http.formLogin()                .loginPage("/login.html") #自定义登录页面                .usernameParameter("user") #对应前端表达name属性                .passwordParameter("pass") #对应前端表达name属性                .loginProcessingUrl("/login")                .defaultSuccessUrl("/doc.html") #登录成功后跳转的页面地址                .failureUrl("/login?error=true")                .and()                .authorizeRequests()                .antMatchers("/login.html").permitAll() #放通登录页面                .anyRequest().authenticated(); #其他请求都要认证        http.csrf().disable();    }

    重新启动项目,输入定义的用户名和密码,登录成功直接跳转到/doc.html

    antMatchers("url").permitAll() 是把某个url放通,不需要登录就能访问。

    关于“Spring Security怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: Spring Security怎么使用

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

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

    猜你喜欢
    • Spring Security怎么使用
      这篇文章主要介绍“Spring Security怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Security怎么使用”文章能帮助大家解决问题。Spring...
      99+
      2023-06-30
    • Spring Security如何使用
      Spring Security如何使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是Spring SecuritySpring Security是一个功能强大且高度可...
      99+
      2023-06-14
    • Spring Security的简单使用
      目录什么是Spring SecuritySpring Security测试SpringSecurity的使用静态资源一些其他的小东西什么是Spring Security ...
      99+
      2024-04-02
    • Spring security框架如何使用
      本篇内容介绍了“Spring security框架如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介Spring Secu...
      99+
      2023-07-05
    • 使用Spring Security怎么JSON进行配置并登录
      这期内容当中小编将会给大家带来有关使用Spring Security怎么JSON进行配置并登录,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。准备工作基本的spring security配置就不说了,网上一...
      99+
      2023-05-31
      spring security json
    • SpringCloud的spring-security怎么配置
      这篇文章主要讲解了“SpringCloud的spring-security怎么配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringCloud的spring-security怎么配置...
      99+
      2023-06-05
    • Spring Security单点登录的权限功能怎么使用
      这篇文章主要介绍“Spring Security单点登录的权限功能怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Security单点登录的权限功能怎么使用”...
      99+
      2023-06-29
    • Spring Security全新版本使用方式
      目录前言基本使用升级版本旧用法新用法高级使用基于方法的动态权限基于路径的动态权限效果测试总结前言 前不久Spring Boot 2.7.0 刚刚发布,Spring Security ...
      99+
      2024-04-02
    • Spring Security用户定义
      目录一、基于内存二、基于mybatis基于内存的和基于数据库的,下面我给大家简单介绍一下这两种方式。 一、基于内存 Spring Security中的配置: @Override pr...
      99+
      2024-04-02
    • Spring Security 5.7.0弃用 WebSecurityConfigurerAdapter
      文章目录 Spring Security 弃用 WebSecurityConfigurerAdapter官网博客说明配置HttpSecurity配置WebSecurityLDAP认证JDBC认证内存内认证全局认证管理器局部认证管理器...
      99+
      2023-08-20
      spring java spring boot 后端
    • Spring Boot(四)之使用JWT和Spring Security保护REST API
      通常情况下,把API直接暴露出去是风险很大的,不说别的,直接被机器攻击就喝一壶的。那么一般来说,对API要划分出一定的权限级别,然后做一个用户的鉴权,依据鉴权结果给予用户开放对应的API。目前,比较主流的方案有几种: 用户名和密码鉴权,使...
      99+
      2023-05-31
      spring boot rest
    • Spring Security 多过滤链的使用详解
      目录一、背景二、需求1、给客户端使用的api2、给网站使用的api三、实现方案方案一:方案二四、实现1、app 端 Spring Security 的配置五、实现效果1、app 有权...
      99+
      2024-04-02
    • Spring security权限配置与使用大全
      简介 Spring Security 是为了基于Spring的应用程序提供的声明式安全保护的安全性框架。Spring Security 提供了完整的安全性解决方案,它能够在Web请...
      99+
      2024-04-02
    • 一文详解Spring security框架的使用
      目录简介实例简介 Spring Security是一个基于Spring框架的安全认证和授权框架,它提供了一套全面的安全解决方案,可以在Web应用、移动应用和Web服务等不同场景下使用...
      99+
      2023-03-23
      Spring security框架使用 Spring security框架 Spring security
    • Spring Boot中使用Spring Security如何实现安全控制
      Spring Boot中使用Spring Security如何实现安全控制?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。准备工作首先,构建一个简单的Web工程,...
      99+
      2023-05-31
      springboot spring security
    • Spring Security怎么实现接口放通
      本文小编为大家详细介绍“Spring Security怎么实现接口放通”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Security怎么实现接口放通”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
      99+
      2023-06-30
    • Spring Security中的权限注解如何使用
      今天小编给大家分享一下Spring Security中的权限注解如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
      99+
      2023-06-30
    • spring security国际化及UserCache的配置和使用
      国际化配置<!-- 定义上下文返回的消息的国际化 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableRe...
      99+
      2023-05-31
      spring security 国际化
    • Spring Security中使用authorizeRequests遇到的问题小结
      目录SpringSecurity 框架简介 一、运行项目报错 二、错误修正SpringSecurity 框架简介 Spring 是非常流行和成功的 Java 应用开发框架,Sprin...
      99+
      2023-02-03
      Spring Security使用authorizeRequests Spring Security遇到问题
    • Spring Security使用数据库登录认证授权
      目录一、搭建项目环境1、创建 RBAC五张表2、创建项目二、整合 Spring Security实现用户认证1、后端整合2、前端整合三、整合 Spring Security实现用户授...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作