0
点赞
收藏
分享

微信扫一扫

SpringSecurity(个人笔记,入门使用)

guanguans 2022-03-12 阅读 43

1、引入依赖不配置

springBoot的启动器

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

默认的账号为:user ,密码在控制台打印输出
在这里插入图片描述

2、编写一个

3、SpringSecurity如何获取参数的?

前端、请求为 /userLogin

<form class="form-signin" th:method="post" th:action="@{/userLogin}">
        <h1 class="h3 mb-3 font-weight-normal">请登录</h1>

        <input type="text" class="form-control" placeholder="用户名" required="" autofocus="" name="username">
        <br>
        <input type="password" class="form-control" placeholder="密码" required="" name="password">
        <div class="checkbox mb-3">
            <label>
                <input type="checkbox" name="rememberme"> 记住我
            </label>
        </div>
        <button class="btn btn-lg btn-primary btn-block" type="submit" >登录</button>
    </form>

controller层,写的请求是 /userLogin

@GetMapping("/userLogin")
    public String login(){
        
        return "login/login";
    }

SpringSecurity 配置类获取参数并校验

http.formLogin()
                .loginPage("/userLogin").permitAll()          //认证之前跳转的页面
                .usernameParameter("username").passwordParameter("password")
                .defaultSuccessUrl("/test")     //成功之后的跳转,重定向
                .failureUrl("/userLogin?error");    //登录失败之后的跳转,转发
               

当我表单点击提交的时候,并没有走controller层的方法(已测试)。但是我不理解SpringSecurity 是如何让表单不走controller的方法同时获取到表单里面的参数。

找到问题所在了

上面的配置类对比一下下面的配置类

http.formLogin()
                .loginPage("/userLogin").permitAll()          //认证之前跳转的页面,登录访问路径默认和登录页面路径一致
                .loginProcessingUrl("/ceshi")           //登录访问路径,这个是表单账号密码提交的路径
                .usernameParameter("username").passwordParameter("password")
                .defaultSuccessUrl("/test")     //成功之后的跳转,重定向
                .failureUrl("/userLogin?error");    //登录失败之后的跳转,转发

解释:上面的 .loginProcessingUrl("/ceshi") 如果没有写的话,登录访问路径默认和登录页面路径一致。本身这个表单就不走controller层的方法,为什么不走?很大原因是拦截器的问题(可以去看源码)。

举报

相关推荐

0 条评论