springsecurity详解

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

1.springsecurity

需求:

设计思路

springsecurity底层实现为一条过滤器链,就是用户请求进来,判断有没有请求的权限,抛出异常,重定向跳转。

实现思路分析

1.URL管理

springsecurity自带一个登录页。
/**

  • 表单登陆security
  • 安全 = 认证 + 授权
    */

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
        //以下五步是表单登录进行身份认证最简单的登陆环境
        http.formLogin() //表单登陆 1
            .and() //2
            .authorizeRequests() //下面的都是授权的配置 3
            .anyRequest() //任何请求 4
            .authenticated(); //访问任何资源都需要身份认证 5


}

}

2.复写configure

如果只实现一个WebSecurityConfigurerAdapter然后重写一下configure方法,效果会默认使用springsecurity的登录页 ,以及项目启动时后台会打印出一个默认的密码,然后使用任意账号就可以进行登录访问指定的资源

3.自定义登录页 与 UserDetailsService 用户名密码校验

如果想要使用自己的登录页 并且用户名密码是自己数据库中的,进一步完善spring security认证体系,首先需要做以下配置。
@Override
protected void configure(HttpSecurity http) throws Exception {
//以下五步是表单登录进行身份认证最简单的登陆环境
http.formLogin() //表单登陆 1
.loginPage(“/login.html”) //指定登陆页面
.and() //2
.authorizeRequests() //下面的都是授权的配置 3
.antMatchers(“/login.html”).permitAll()//访问此地址就不需要进行身份认证了,防止重定向死循环
.anyRequest() //任何请求 4
.authenticated(); //访问任何资源都需要身份认证 5
}

4.4.登陆页面提交页面 /authentication/form

添加登陆页面提交页面,关闭跨站请求伪造攻击,登陆访问资源。

5.数据处理器

在这个过程一般在数据存储和,存储到mysql中,或者进行其他逻辑判断等。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆</title>
</head>
<body>
   <h2>标准登陆页面</h2>
   <h3>表单登陆</h3>
   <form action = "/authentication/form" method ="post">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td colspan="2"><button type="submit">登陆</button></td>
            </tr>
        </table>
   </form>
</body>
</html>
@Override
    protected void configure(HttpSecurity http) throws Exception {
            //以下五步是表单登录进行身份认证最简单的登陆环境
            http.formLogin() //表单登陆 1
                .loginPage("/login.html") //指定登陆页面
                .loginProcessingUrl("/authentication/form")//登陆页面提交的页面 开始使用UsernamePasswordAuthenticationFilter过滤器处理请求
                .and() //2
                .authorizeRequests() //下面的都是授权的配置 3
                .antMatchers("/login.html").permitAll()//访问此地址就不需要进行身份认证了,防止重定向死循环
                .anyRequest() //任何请求 4
                .authenticated() //访问任何资源都需要身份认证 5
                .and()
                .csrf().disable();//关闭跨站请求伪造攻击拦截

    }

参考资料和推荐阅读

  1. springsecurity详解.

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值