zoukankan      html  css  js  c++  java
  • spring security关闭http验证 和 springboot 使用h2数据库

    spring security关闭http验证

    最近在跑demo的过程中,访问swagger页面的时候需要验证登录,记得在之前写的代码中是关闭了security验证,无需登录成功访问,直接在application.yml配置文件中添加上:

    management.security.enabled: false

    发现报错,其实在添加的过程中就发现 

     

    此配置已经失效 ,经查阅发现spring boot 2.0+之后这样配置就不能生效了

    但是我们可以在代码中去配置。
    我们可以新建一个类SecurityConfig 继承WebSecurityConfigurerAdapter类,
    然后重写父类中的configure(HttpSecurity http) 方法。
    idea中重写方法的快捷键默认是crtl+o

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
     
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            
            http.authorizeRequests()
                    .anyRequest().permitAll().and().logout().permitAll();//配置不需要登录验证
        }
    }

    现在再来访问任意的接口,不需要再验证啦。

    此外,再补充一点,security默认的username=user,password是我们运行程序的时候生成的

    感谢:https://blog.csdn.net/c851204293/article/details/92975654

    springboot 使用h2数据库

    1. 创建基本spring boot项目

    2. 加入h2数据库依赖

    <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.197</version>
    <scope>test</scope>
    </dependency>

    3. 配置配置文件

    
    
    spring.jpa.database=h2
    spring.jpa.show-sql=true
    spring.datasource.driver-class-name=org.h2.Driver
    # 内存模式
    spring.datasource.url=jdbc:h2:mem:testdb
    spring.datasource.username=sa
    spring.datasource.password=
    # 只进行表的更新。默认是删除原来的表结构重新生成 这样会出问题。
    spring.jpa.hibernate.ddl-auto = update
    spring.h2.console.path=/h2-console
    spring.h2.console.enabled=true
    #其中有三个值,always为始终执行初始化,embedded只初始化内存数据库(默认值),如h2等,never为不执行初始化。
    spring.datasource.initialization-mode=embedded
    
    

     配置文件内容,和h2数据库登录信息一致

    4.代码结构

    entity

    import java.util.Collection;
    import java.util.Date;
    import java.util.List;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import lombok.Data;
    
    @Entity
    @Table(name = "user")
    @Data
    public class User {
    
        @Id
        @Column(columnDefinition = "int")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        private String name;
    
        private String password;
    
        private String email;
    
        @Column(name = "phone_number") //映射数据库中的字段名,与之对应。属性用驼峰命名
        private String phoneNumber;
    
        private int status;
    
        @Column(name = "create_time")
        private Date createTime;
    
        @Column(name = "last_login_time")
        private Date lastLoginTime;
    
        @Column(name = "last_update_time")
        private Date lastUpdateTime;
    
        private String avatar;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        public String getPhoneNumber() {
            return phoneNumber;
        }
    
        public void setPhoneNumber(String phoneNumber) {
            this.phoneNumber = phoneNumber;
        }
    
        public int getStatus() {
            return status;
        }
    
        public void setStatus(int status) {
            this.status = status;
        }
    
        public Date getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }
    
        public Date getLastLoginTime() {
            return lastLoginTime;
        }
    
        public void setLastLoginTime(Date lastLoginTime) {
            this.lastLoginTime = lastLoginTime;
        }
    
        public Date getLastUpdateTime() {
            return lastUpdateTime;
        }
    
        public void setLastUpdateTime(Date lastUpdateTime) {
            this.lastUpdateTime = lastUpdateTime;
        }
    
        public String getAvatar() {
            return avatar;
        }
    
        public void setAvatar(String avatar) {
            this.avatar = avatar;
        }
    }

    dao层

    public interface UserRepository extends JpaRepository<User, Long> {
        List<User> getUsersByName(String Name);
    }

    controller层

    @RestController
    public class ControllerTest {
    
        @Autowired
        private UserRepository userRepository;
    
        @GetMapping("userData")
        public void userData(){
            List<User> list = userRepository.findAll();
            System.out.println("user数据为:" + list.toString());
        }
    
        @GetMapping("user")
        public void usera(){
            Optional<User> user = userRepository.findById(1L);
            System.out.println("user数据为:" + user.get().getName());
        }
    }

    5.访问

    http://localhost:8080/user

     http://localhost:8080/userData

     登录h2控制台

    http://localhost:8080/h2-console

  • 相关阅读:
    SQl语句学习笔记(二)
    Adaboost 算法
    降维PCA技术
    scanf 格式化字符串详解
    大小端模式和位域详解(转载)
    推荐系统开源软件列表汇总和点评(转载)
    遗传算法入门(转载)
    大白话解析模拟退火算法(转载)
    机器学习相关——协同过滤(转载)
    python面向对象之单例模式
  • 原文地址:https://www.cnblogs.com/FondWang/p/12019067.html
Copyright © 2011-2022 走看看