SpringBoot + Spring Security基本使用及个性化登录配置详解

  

  

这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档

  

我就只说下SpringSecurity核心功能:

  
      <李>认证(你是谁)   <李>授权(你能干什么)   <李>攻击防护(防止伪造身份)   
  

  

这里我们以SpringBoot作为项目的基本框架,我这里使用的是maven的方式来进行的包管理,所以这里先给出集成Spring Security的方式

        & lt; dependencies>   …   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-security   & lt;/dependency>   …   & lt;/dependencies>   之前      

然后建立一个Web层请求接口

        @RestController   @RequestMapping(“/用户”)   公开课用户控件{   @GetMapping   公共字符串getuser () {   返回“你好Spring Security”;   }   }   之前      

接下来可以直接进行项目的运行,并进行接口的调用看看效果了。

  

  

我们首先通过浏览器进行接口的调用,直接访问http://localhost: 8080/用户,如果接口能正常访问,那么应该显示“你好Spring Security”。
  

  

但是我们是没法正常访问的,出现了下图的身份验证输入框
  

  

 SpringBoot + Spring Security基本使用及个性化登录配置详解“> <br/>
  </p>
  <p>这是因为在SpringBoot中,默认的Spring Security就是生效了的,此时的接口都是被保护的,我们需要通过验证才能正常的访问。Spring Security提供了一个默认的用户,用户名是用户,而密码则是启动项目的时候自动生成的。<br/>
  </p>
  <p>我们查看项目启动的日志,会发现如下的一段日志</p>
  <blockquote>
  <p>使用默认安全密码:62 ccf9ca - 9 -领域- 4993 - 8566 - 8468 - cc33c28c <br/>
  </p>
  </引用>
  <p>当然你看到的密码肯定和我是不一样的,我们直接用用户和启动日志中的密码进行登录。</p>
  <p>登录成功后,就跳转到了接口正常调用的页面了。<br/>
  </p>
  <p>如果不想一开始就使能Spring Security,可以在配置文件中做如下的配置:</p>
  
  <pre类=   #安全使能   security.basic。启用=false      

刚才看到的登录框是SpringSecurity是框架自己提供的,被称为httpBasicLogin。显示它不是我们产品上想要的,我们前端一般是通过表单提交的方式进行用户登录验证的,所以我们就需要自定义自己的认证逻辑了。

  

  

每个系统肯定是有自己的一套用户体系的,所以我们需要自定义自己的认证逻辑以及登录界面。
  这里我们需要先对SpringSecurity进行相应的配置

        @ configuration   公开课BrowerSecurityConfig延伸WebSecurityConfigurerAdapter {      @Override   保护无效配置(HttpSecurity http){抛出异常   http.formLogin()//定义当需要用户登录时候,转到的登录页面。   ,()   .authorizeRequests()//定义哪些URL需要被保护,哪些不需要被保护   .anyRequest()//任何请求,登录后可以访问   .authenticated ();   }   }      之前      

接下来再配置用户认证逻辑,因为我们是有自己的一套用户体系的

        @ component   公共类MyUserDetailsService实现UserDetailsService {      私人日志记录器=LoggerFactory.getLogger (getClass ());      @Override   公共UserDetails loadUserByUsername(字符串的用户名)抛出UsernameNotFoundException {   logger.info(“用户的用户名:{}”,用户名);//TODO根据用户名,查找到对应的密码,与权限//封装用户信息,并返回。参数分别是:用户名:密码,用户权限   用户用户=新用户(userame,“123456”,   AuthorityUtils.commaSeparatedStringToAuthorityList (" admin "));   返回用户;   }   }      之前      

这里我们没有进行过多的校验,用户名可以随意的填写,但是密码必须得是“123456”,这样才能登录成功。
  

  

同时可以看的到,这里用户对象的第三个参数,它表示的是当前用户的权限,我们将它设置为“admin”

。   

运行一下程序进行测试,会发现登录界面有所改变
  

  

 SpringBoot + Spring Security基本使用及个性化登录配置详解“> <h2 class=SpringBoot + Spring Security基本使用及个性化登录配置详解