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

倪大野

共 4948字,需浏览 10分钟

 · 2023-05-09

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

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自动装配原理 如何优雅的实现接口防刷 系统日志规范
浏览 41
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

举报