基于REST的数据处理流程_开发环境踩坑

2020-07-10 17:37:00 浏览数 (1)

昨天捋了捋思路,今天着手开始准备构建基础工程,spring boot是我一直比较偏爱的,现在在国内开发领域也越发的火了起来。另外准备试试kotlin,之前看了一个教程,感觉kotlin的语法特性挺有意思,可以让代码量下降很多。

版本使用:

代码语言:javascript复制
kotlin_version = '1.2.10'
springBootVersion = '1.5.9.RELEASE'

今天只记录坑:

坑1:日志颜色,之前版本是不用的,现在需要加入,才能让banner.txt上色。

代码语言:javascript复制
#日志颜色
output:
  ansi:
    enabled: always

坑2:vagrant做数据库环境,却怎么也连不上redis

vagrant 配置了端口转发:

#redis

config.vm.network "forwarded_port", guest: 6379, host: 6379

但是开始怎么也连不上

先关了防火墙: sudo ufw disable 不管用。

注释redis.conf下面的语句

bind 127.0.0.1

然后发现搞定了.

坑3:

使用了H2 做测试数据库,但是加入权限以后h2的console就怎么也登不上去了,开始是

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Jan 28 20:21:43 CST 2018

There was an unexpected error (type=Forbidden, status=403).

Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.

这个问题 可以通过来解决,

代码语言:javascript复制
http.csrf().disable()

然而,事情并没有结束,H2的console界面出来了,但是连接以后,一片空白,F12打开控制台,可以看到 in a frame because it set 'X-Frame-Options' to 'deny'.

又是一番搜索

代码语言:javascript复制
http.headers().frameOptions().disable();

搞定。

整个测试代码如下:

代码语言:javascript复制
@Configuration
@EnableWebSecurity
open class SecurityConfig : WebSecurityConfigurerAdapter() {

    /**定义认证用户信息获取来源,密码校验规则等 */
    @Throws(Exception::class)
    override fun configure(auth: AuthenticationManagerBuilder?) {
        //inMemoryAuthentication 从内存中获取
        auth!!.inMemoryAuthentication().withUser("dafei1288").password("dafei1288").roles("USER")

        //jdbcAuthentication从数据库中获取,但是默认是以security提供的表结构
        //usersByUsernameQuery 指定查询用户SQL
        //authoritiesByUsernameQuery 指定查询权限SQL
        //auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(query).authoritiesByUsernameQuery(query);

        //注入userDetailsService,需要实现userDetailsService接口
        //auth.userDetailsService(userDetailsService);
    }

    /**定义安全策略 */
    @Throws(Exception::class)
    override fun configure(http: HttpSecurity) {
        http.csrf().disable()
        http.headers().frameOptions().disable();
        http.authorizeRequests()//配置安全策略
                .antMatchers("/**","/h2-console/**").permitAll()//定义/请求不需要验证
                .anyRequest().authenticated()//其余的所有请求都需要验证
                .and()
                .logout()
                .permitAll()//定义logout不需要验证
                .and()
                .formLogin()//使用form表单登录

    }

}

后面要进入API规划了。

0 人点赞