SpringSecurity总结1

一,springsecurity 概述

Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

二,第一个springsecurity 项目

引入依赖

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

自定义用户名和密码

继承WebSecurityConfigurerAdapter,重写configure() 方法,完成自定义用户名和密码

security 提供两种方式自定义用户名和密码

第一种:inMemoryAuthentication()(不推荐,不用)

第二种:userDetailsService()

​ 1:自定义类去实现 UserDetailsService 接口,重写loadUserByUsername(String username)//username:页面传过来过来账号

​ 2:根据username查数据库,是否存在

用户自定义登录页面(非前后端分离项目)

重configure() 方法

注意的点:1:配地址前面加/ 2:配loginProcessingUrl,对应fom 表单的action 的地址

  http.formLogin()   //告诉框架自定义页面
            .loginPage("/login.html")   //登录页面地址
            .loginProcessingUrl("/dologin") //对应表单提交的action
            .permitAll();  //对login.html 和 /doloign 放行

        http.authorizeRequests()
                .anyRequest().authenticated();  //所有请求都拦截


        //跨站脚本攻击关掉
        http.csrf().disable();

授权(鉴权)

给系统接口绑定一个权限,判断用户是否拥有该接口指定的权限

  .antMatchers("/hello").hasAuthority("stu:query")
  .antMatchers("/hello").permitAll()  //配置免登录方式

注解式鉴权开发

1:开启注解式开发 加@EnableGlobalMethodSecurity 注解

2:security 提供三套方式注解,但是默认都是关闭的,使用时要打开

3:把注解加上请求方法上

4:常用注解方式 @PreAuthorize(“hasAuthority(‘stu:query’)”)

三,完整的springsecurity 配置流程

导入依赖

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

整个项目已经是一个安全项目,访问接口都登录

怎么自定义用户名和密码?

继承一个类(WebSecurityConfigurerAdapter) 重写,重写configure(AuthenticationManagerBuilder auth) 方法,

auth.userDetailsService()就可以自定义用户名和密码。具体写法,写一个类继承 UserDetailsService 接口,重写loadUserByUsername方法,根据页面穿过来的用户名,去数据查,判断是否有该用户信息。

怎么自定义用户登录页面?(前提条件:不是一个前后端分离项目)

重写configure(HttpSecurity http)

        http.formLogin()   //告诉框架自定义页面
            .loginPage("/login.html")   //登录页面地址
            .loginProcessingUrl("/dologin") //对应表单提交的action
            .permitAll();  //对login.html 和 /doloign 放行
          
         
        http.authorizeRequests()
        		//授权写的地方
                .anyRequest().authenticated();  //所有请求都拦截     
        
           //跨站脚本攻击关掉
        http.csrf().disable();

//配置前后端分离项目几个处理器。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值