Spring Security学习笔记一

一、使用Spring Security

1、在pom 文件中添加Spring Security的依赖。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
  <version>${spring.version}</version>
</dependency>

 

2、启动项目Spring Security会在控制台中打印密码,用户名默认为user。

 

  

3、在浏览其中输入接口http://localhost:8081/menu/list,会跳转到login页面,弹出Spring Security默认的登录框。在登录框中输入用户名和密码后,会调用接口返回数据。

  每次启动项目Spring Security都会生成一个不同的密码,这个是加密后的密码。

 

 

二、使用自定义用户、密码登录

  在开发过过程中,当然要使用自己的用户名和密码登录,而不是Spring Security自带的用户名和密码登录。我的登录名和密码是admin/123456。

1、自定义UserDetailsServiceImpl实现Spring Security的UserDetailsService,实现UserDetailsService的loadUserByUsername(String username)方法。

  在该方法中调用自定义的UserServic接口,根据用户名获取用户信息。然后将用户信息传递给自定义的实现了UserDetails的对象。

 

2、UserDetails的实现类获取用户的登录名和密码以及一些业务参数,如用户id,并设置所有返回类型为boolean的方法,返回true。默认设置权限为admin。

 

3、对密码进行加密

  如果只有上面的步骤,则在登录时会报错,这是因为Spring Security中没有密码的的加密方式。解决方式是添加WebSecurityConfigurerAdapter的子类,

在该类中配置密码的加密方式。在验证后如果加密后的密码和保存的密码一致,则验证通过。

 

 

、使用自己的登录页面实现登录

  登录当然不能用Spring Security的页面来登录了,我们需要设计自己的登录页面来登录,登录成功后进入到首页。

1、首先配置登录成功和登录失败的处理类,返回的json格式的数据

  

 

 

 

2、WebSecurityConfigurerAdapter的子类中,重写configure(HttpSecurity httpSecurity)设置一些配置

  

 

 

 当前后分离的时候,会涉及到跨域请求的问题,这个时候可以调用cors()方法来解决该问题。

3、Spring Security默认使用表单形式传递数据,如果前端是使用json传递数据,则需要自己写一个集成了UsernamePasswordAuthenticationFilter类的过滤器

  过滤器重写父类的attemptAuthentication(HttpServletRequest request, HttpServletResponse response)方法,解析request请求中数据获取用户名和密码。

  然后在WebSecurityConfigurerAdapter的子类中创建该过滤器,并进行注册。

 

初次学习Spring Security,其中有几点自己踩过的坑,在这里记下来,以便随时能够查看。

 

posted @ 2020-07-24 23:26  qee  阅读(205)  评论(0编辑  收藏  举报