SpringSecurity之权限方案——用户认证

共 4948字,需浏览 10分钟

 ·

2023-05-09 02:45


点击上方“蓝字”,发现更多精彩。



09295a9a58b59a27b7d97aeafa808a43.webp



前面我们讲解了一些关于Security的基础知识及基本原理。我们今天看一下如何通过它实现一个简单的web权限认证方案!





0
1
设置用户名密码


1、通过配置文件设置用户名密码


在application.yml文件中配置


spring.security.user.name: admin


spring.security.user.password: admin


2、编写代码实现接口




package com.yuxuntoo.config;



@Configuration



public class SecurityConfig {



// 注入 PasswordEncoder 类到 spring 容器中




@Bean



public PasswordEncoder passwordEncoder(){


        return new BCryptPasswordEncoder();


        }


}







package com.yuxuntoo.service;








@Service



public class LoginService implements User Details Service {


        @Override


        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {


                // TODO判断用户名是否存在


                if (!"admin".equals(username)){


                        throw new UsernameNotFoundException("用户名不存在!");


                 }


                 // 从数据库中获取的密码 atguigu 的密文 String pwd =         "$2a$10$2R/M6iU3mCZt3ByGXXXXXEEER23UqdeXrb27zkBIizBvAven0/na";


                 // 第三个参数表示权限


                 return new User(username,pwd, AuthorityUtils.commaSeparatedStringToAuthorityList("admin,"));


        }


}





上面loadUserByUsername中TODO处是需要我们自己编写代码,实现数据库查询操作,具体代码实现此处省略了,可以使用Mybatis也可以使用Mybatis plus来完成具体的代码!


0
2
放行登录页面及静态文件

我们可以通过配置类来实现登录页面以及静态资源的过滤,使其无需通过认证,即能访问。





@Configuration



public class SecurityConfig extends WebSecurityConfigurerAdapter {


       // 注入 PasswordEncoder 类到 spring 容器中


        @Bean


        public PasswordEncoder passwordEncoder(){


                 return new BCryptPasswordEncoder();


         }


        @Override


         protected void configure(HttpSecurity http) throws Exception {


                 http.authorizeRequests() .antMatchers("/layui/**","/index"//表示配置请求路径


                .permitAll()  // 指定 URL 无需保护。


                 .anyRequest()  // 其他请求


                .authenticated(); //需要认证


         }


}









往期

精彩

回顾




开篇点睛——Elasticsearch

工欲善其事必先利其器——Elasticsearch安装


如何将网站全部变成灰色的素装效果,瞧过来


宇讯代码生成器开源了


微信支付系列之——统一下单


springboot自动装配原理


如何优雅的实现接口防刷


系统日志规范


浏览 75
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报