Springboot + Spring Security+Swagger 实现前后端分离登录认证及权限控制 (一) 系统的登录以及跳转自定义登录界面

Springboot + Spring Security+Swagger 实现前后端分离登录认证及权限控制 (一) 系统的登录以及跳转自定义登录界面,第1张

Springboot + Spring Security+Swagger 实现前后端分离登录认证及权限控制 (一) 系统的登录以及跳转自定义登录界面

文章目录
  • 前言
  • 一、解决办法
  • 二、使用步骤
    • 1.先把项目跑起来断点打起来走下流程试试
    • 2.自定义登录
  • 总结


前言

因为最近有个项目需要用到Springboot + Spring Security的登录跟权限认证,因为之前都没接触过,所以得从0开始,也是不断的查询摸索,虽然还么理清这些原理,但是好在实现了功能,先解决问题,然后再深究原理,所以打算记录下来实现这块遇到的一些问题,给自己记录也给有需要的朋友


提示:以下是本篇文章正文内容,下面案例可供参考

一、解决办法

那肯定是先百度搜索一下,于是搜到一篇大佬的文章确实写的不错膜拜传送门,这篇可以让你先搭上这些东西,然后有个大概的概念,我只是借鉴了一些,让你先知道核心配置是什么,怎么去自定义查询用户跟权限的方法(因为我之前最开始是要最springcloudgateway+Spring Security来实现鉴权的,其实也是实现了,但是后面需要用swagger,但是依赖springmvc,而网关是reactive,就集成这里有点问题就先暂时搁浅了,后面又时间也把这个记录下。)

二、使用步骤 1.先把项目跑起来断点打起来走下流程试试

可能有些朋友刚开始还不知道怎么创建数据库,只是想单独的试下Spring Security的登录功能。
那么在配置UserDetailsServiceImpl中先不查询数据,把用户密码写死到配置里面。在配置文件.properties中加入配置

#security 配置
spring.security.user.name=admin
spring.security.user.password=123456

把UserDetailsServiceImpl中loadUserByUsername连接数据查询的方法注释掉,启动项目

输入配置的用户密码就能登录,成功就能看到我们自己写的成功后返回,失败就是失败后返回。

2.自定义登录

因为在我们实际的系统使用中,一般是不会用Spring Security自带的登陆界面,这时候需要我们自定义,在核心配置类WebSecurityConfig中的configure方法把.loginPage("/login.html")
代码如下(示例):

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and().csrf().disable();
        http.authorizeRequests()
        		//放开静态页面都能访问的权限
         		.antMatchers("/static/**").permitAll().
                //登出
                and().logout().
                    permitAll().//允许所有用户
                    logoutSuccessHandler(logoutSuccessHandler).//登出成功处理逻辑
                    deletecookies("JSESSIONID").//登出之后删除cookie
                //登入
                and().formLogin().
                    permitAll()//允许所有用户
                    .loginPage("/login.html") //我这里直接跳的html
                    .loginProcessingUrl("/login")//post登录接口,登录验证由系统实现也可以自定义然后在拦截器里面拦截(我后面会用到自定义,因为还有验证码)
                    .successHandler(authenticationSuccessHandler).//登录成功处理逻辑
                    failureHandler(authenticationFailureHandler).//登录失败处理逻辑
              
    }
}

这样就能跳转到登录界面了,并且登录的时候有系统自动校验,下面为html的页面(这里注意事项,提交的请求方法应与.loginProcessingUrl一致)

 

总结

学习接触新的东西,肯定是要花费时间的,下期记录一下图片验证码登录。

我是张同学,记录下工作中出现的问题。
不积跬步,无以至千里;不积小流,无以成江海。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5434320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存