Spring security 02中怎么自定义用户登录页面和登录处理逻辑

发布时间:2021-08-03 14:00:20 作者:Leah
来源:亿速云 阅读:146

Spring security 02中怎么自定义用户登录页面和登录处理逻辑,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Spring security 系列博客目录

对应源代码

开篇

上一篇(在项目里面引入spring-security会发生什么)我们将 Spring-seccurity 引入到了我们的spring-boot工程中,没有做多余的配置,spring-security 就已经默认帮我们配置了一个拦截器,应用启动后,当我们访问应用提供的资源时,都会跳转到 security 为我们提供的一个默认登陆页,当我们输入security为我们提供的用户名和密码,登陆成功后,就可以获取我们需要的资源。那么问题来了!我们如何自定义自己的登录页面,以及使用我们自己的用户信息去登录呢?

实战

创建工程

为了不影响之前的版本,我们这里新建一个模块 spring-security-02,之前的版本是spring-security-01. https://github.com/nimo10050/spring-security-sample/tree/master/spring-security-02

引入依赖

依赖跟上个版本一样,如下:

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

	</dependencies>

新建 SpringSecurity 配置类

既然我们需要自定义一些东西,只能通过额外配置的方式来实现。所以这里引入了spring-security的配置类

UserDetailService 接口

通过重写 UserDetailService 接口的 loadUserByUsername方法来实现登录逻辑,在loadUserByUsername 方法里我们可以读取数据库或者其他存储介质,来校验我们的用户是否存在。最后将我们实现的类配置到config方法中。

/**
 * 自定义登录处理逻辑
 */
public class UserDetailServiceImpl implements UserDetailsService {

/*    @Autowired
private PasswordEncoder passwordEncoder;*/

/**
 * @param username 登录页面输入的用户名
 * @return
 * @throws UsernameNotFoundException
 */
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    // TODO 根据 username 去用户表查询出来用户的信息,然后进行验证

    // 验证成功后,返回Spring-Security 提供的 User 对象
    // 对应三个构造参数依次是: 1.用户名 2.密码(经过 passwordEncoder 加密后的密码) 3.权限列表
    return new User(username, "$2a$10$g1gzj4KvMNY1kMZT1xDx9ufLuaDvCFDpX.PdETx85zQwXI/Mn4ttC", AuthorityUtils.createAuthorityList("admin"));
}

public static void main(String[] args) {
    System.out.println(new BCryptPasswordEncoder().encode("123456"));// $2a$10$g1gzj4KvMNY1kMZT1xDx9ufLuaDvCFDpX.PdETx85zQwXI/Mn4ttC
}
}

其他需要注意的点

http.authorizeRequests().antMatchers("/form/login","/loginPage.html").permitAll().anyRequest().authenticated();

关于Spring security 02中怎么自定义用户登录页面和登录处理逻辑问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. spring boot Security 简单使用
  2. Spring security登录实现原理是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring security

上一篇:Java中怎么使用Sort实现排序

下一篇:如何解决某些HTML字符打不出来的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》