SpringSecurity快速入门和自定义用户名、密码的实现

在SpringBoot项目中导入SpringSecurity依赖

1、在SpringBoot项目中的pom.xml文件中添加SpringSecurity依赖

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

2、启动SpringBoot项目中的启动类
在控制台中出现这个密码,这就是我们没有实现自定义密码,SpringSecurity帮我们自动生成的密码。
在这里插入图片描述
3、拿到这个密码后,我们就可以使用SpringSecurity为我们自动生成的账号和密码登录了
在这里插入图片描述


出现下面的页面说明我们已经登录成功了(因为我没有写任何东西,所以页面会出现404异常)。
在这里插入图片描述

自定义用户名和密码登录的实现

自定义用户名和密码登录的实现方法有三种:
第一种:配置文件的实现
第二种:继承WebSecurityConfigurerAdapter类,并且将BCryptPasswordEncoder对象交给Spring容器管理。
第三种:实现UserDetailsService接口,从数据库中查找用户名和密码
【注意事项】:三个方法只能选其一,不可以同时存在。

第一种实现方式:配置文件的实现

spring:
  security:
    user:
      name: "admin"
      password: "admin123"
      roles: "admin"

这样就是只能按照规定的用户名和密码登录了,再次启动SpringBoot项目时,SpringSecurity也不会自动帮助我们生成密码了。

第二种实现方式:继承WebSecurityConfigurerAdapter类,并且将BCryptPasswordEncoder对象交给Spring容器管理。

我们首先写一个配置类,并且使用@Configuration注解标记这个配置类,这样在启动SpringBoot的启动类时,Spring会自动将这个配置类交给Bean管理。继承WebSecurityConfigurerAdapter类,重写configure()方法。

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {

        auth.inMemoryAuthentication().withUser("admin")           // 用户名
                                    .password(passwordEncoder().encode("admin123"))   // 密码
                                    .authorities("admin");                 // 权限集合
    }

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {

        return new BCryptPasswordEncoder();
    }
}


第三种:实现UserDetailsService接口,从数据库中查找用户名和密码

1、目前数据库中的数据表中有两条数据
在这里插入图片描述
2、在pom文件中导入MyBatis-Plus(或者Mybatis)和数据库依赖

		<!--导入MyBatis-Plus依赖 用来操作数据库-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

        <!--导入数据库依赖来配置数据源找到数据库-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

3、创建实体类

import java.io.Serializable;

public class Users implements Serializable {

    private static final long serialVersionUID = -2950916241569716094L;
    
    private Integer id;

    private String username;

    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

4、创建Mapper接口并且继承BaseMapper<实现类>接口,这样可以用MyBatis-Plus操作数据库了

@Mapper
public interface UserMapper extends BaseMapper<Users> {

}

5、创建自定义服务类实现UserDetailsService接口

【先到这里,下午继续写…】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值