SpringSecurity自定义登陆

1.简介

最近在学习SpringSecurity安全框架,在这里对所学的知识,以及遇见问题进行总结。

2.maven引入jar包

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

3.不做任何配置直接运行项目,他会有默认的登陆页面以及随机的登陆密码

在这里插入图片描述

在这里插入图片描述

4.目录结构

在这里插入图片描述

5.登陆页面

<form action="/login" method="post">
    <label for="name">用户名:<input type="text" id="name" name="username" value="admin"></label>
    <label for="pass">密码:<input type="text" id="pass" name="password" value="123456"></label>
    <input type="submit" value="登陆">
</form>

6.loginController.java

@RestController
public class LoginController {
    @RequestMapping("succ")
    public String succ(){
        return "index.html";
    }
    @RequestMapping("fail")
    public String fail(){
        return "fail.html";
    }
}

7.配置自己的登陆页面

继承WebSecurityConfigurerAdapter 类
重写configure(HttpSecurity http) 方法
.csrf().disable()必须加不然会包302错误,会一直重定向登陆页面

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        		//方向页面或接口
                .antMatchers("/login.html").permitAll()
                .antMatchers("/fail.html").permitAll().
                //所有页面都必须认证登陆
                .anyRequest().authenticated()
                .and()
                .formLogin()
                //自定义登陆界面
                .loginPage("/login.html")
                //页面登陆时跳转的登陆方法、和我自己写的Controller没有关系
                //必须和表单的action="/login" 地址一样
                //自定义登陆逻辑 登陆时走这个路口
                .loginProcessingUrl("/login")
                //成功跳转 必须是post方式
                .successForwardUrl("/succ")
                //失败跳转 必须是post方式
                .failureForwardUrl("/fail")
                //自定义登陆参数
                //.usernameParameter("")
                //.passwordParameter("");
                .and()
                //关闭srf防护
                .csrf().disable();
    }
    @Bean
    public PasswordEncoder pw(){
        return  new BCryptPasswordEncoder();
    }

8.更改登陆逻辑

@Service
public class UserServiceImpl implements UserDetailsService {
    @Autowired
    private PasswordEncoder pw;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        System.out.println("sdafdsfsadfsafdsd");
        //1.根据username查询数据库
        if(!"admin".equals(username)){
            throw new UsernameNotFoundException("用户名或密码错误");
        }
        //2.根据查询的对象比较密码
        String password = pw.encode("123456");
        //3.返回用户对象

        return new User("admin",password, AuthorityUtils
                .commaSeparatedStringToAuthorityList("admin,aa"));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Security中,可以通过配置来自定义登录页面。需要进行以下几个步骤: 1. 创建自定义登录页面。可以在项目中创建一个JSP或HTML文件,用于显示登录表单。 2. 在Spring Security的配置文件中指定自定义登录页面。可以使用`<security:form-login>`元素来配置登录页面的路径,例如:`<security:form-login login-page="/login.jsp" />`。其中,`login-page`属性指定了登录页面的路径。 3. 确保自定义登录页面可以被匿名访问。可以使用`<security:intercept-url>`元素来配置URL的访问权限,例如:`<security:intercept-url pattern="/login.jsp" access="permitAll" />`。其中,`pattern`属性指定了匹配的URL路径,`access`属性指定了访问该URL的权限。 通过以上配置,您可以实现Spring Security自定义登录界面。请注意,在配置文件中的其他部分可能还有其他相关配置,比如配置认证信息、配置退出登录等。详细配置可以参考引用和引用中的示例代码和解释。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringSecurity实现自定义登录界面](https://blog.csdn.net/qq_38526573/article/details/103402060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Memory沙漏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值