zoukankan      html  css  js  c++  java
  • 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,其中有几点自己踩过的坑,在这里记下来,以便随时能够查看。

  • 相关阅读:
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-34: ordinal not in range(128) 解决
    selenium 页面元素定位之iframe里面的元素定位(包括有无id、name的)
    Python单元测试框架
    python 学习笔记之条件循环等语句
    selenium python脚本调用java script 报Message: u'$ is not defined' ; Stacktrace 的解决历程
    selenium2 webdriver 常用的python 函数
    python学习笔记之列表、元组、字典(2)
    python学习笔记之列表、元组、字典(1)
    python 学习笔记之基础知识(2)
    python 学习笔记之基础知识(1)
  • 原文地址:https://www.cnblogs.com/yaqee/p/13371322.html
Copyright © 2011-2022 走看看