昨天捋了捋思路,今天着手开始准备构建基础工程,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规划了。