Spring security config httpSecurity tips

在配置security时,由于版本更迭、加上本身配置项就很多,所以显得好像很复杂似的。

所以饭要一点一点吃嘛,先记下一个小知识点

hasRole() 和 hasAuthority()区别

下面是spring官方文档的一个例子

1
2
3
4
5
6
7
8
9
10
11
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests() 1
.antMatchers("/resources/**", "/signup", "/about").permitAll() 2
.antMatchers("/admin/**").hasRole("ADMIN") 3
.antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')") 4
.anyRequest().authenticated() 5
.and()
// ...
.formLogin();
}

查看更多

分享到

CloudAndVue origins: Stand a Flag

公司的项目也算是告了一个段落,总结一下:

  • 规矩立起来难,但是破坏太简单了
  • 事情都是以结果为导向的,没人在乎你到底偷摸的努力了多少
  • 努力成为指定规则的人

left better  right bad

如此舒服的commit记录,是长时间形成的规范,但是破坏太容易了

查看更多

分享到

Springboot自定义spring security异常信息

在UAA(用户认证系统)中,由于接入了spring-security,在登录异常时,返回的异常信息都不是太友好,

1
2
3
4
5
6
7
8
9
{
"status": 400,
   "message": "Bad credentials"
}

{
"status": 400,
   "message": "坏的凭证"
}

查看更多

分享到

用户系统第三方登录设计

最近用户系统要升级,开始接入第三方登录,目前看来接入的第三方还不是一般的多,大致数了一下,微信、支付宝、钉钉、淘宝。。。

现有的用户模型显然是不支持这种扩展的,首先动的就是数据库,目前User表很单一,里面存的只是一些常规的用户数据,那么如何改造呢?

Google大法没什么不好的,取长补短,吸收来自大千世界的优秀知识。

下面这篇文章是在掘金发现的,称得上鞭辟入里,读完让人豁然开朗。

查看更多

分享到

spring-cloud-gateway 到底对我的UAA做了什么

哈哈,这可能就是典型的标题党了

首先说一下问题,最近正好负责微服务下的一个子项目

认证中心 UAA

认证中心基于spring-security-oauth2,选用这个框架也是为了以后的扩展,第一就是方便接入第三方登录,第二嘛是为了别人方便接入我们,哈哈哈,以后中小企业,可以选择用微信登录,支付宝登录,还有噼里啪登录。。。

查看更多

分享到

mysql批量插入时,如何不插入重复的数据

温故而知新

知识这个东西,看来真的要温故而知新,一直不用,都要忘记了😑

业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入

那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?

查看更多

分享到

Alipay(支付宝支付) 如何实现一个项目配置多个商户信息付款给对应商户

如何实现一个项目配置多个商户信息付款给对应商户

最近在对接支付宝支付时,遇到了一个问题

用户在付款时,需要直接付款到指定支付宝账户。

这个需求也无可厚非,就像我们公司有四个分公司,分别在北京、上海等地,如果钱只能到总公司的账户上,那在财务结算的时候就很麻烦。

简单说一下问题背景:

公司准备上线一个商城应用,有分公司和服务商的概念,意思就是收钱的不是一个人。

前一阵子,蚂蚁金服投了一大笔钱,也算是达成了合作,所以在第三方支付中首选了支付宝,场景是手机网站支付,问题就在这出现了。目前支付宝只在当面付中支持配置多个收款账户,也是在社区里逛了一阵子才知道这个信息的。

查看更多

分享到

Commands from packages installed with yarn not found?

前一段时间,删掉了整个系统的NPM依赖,抛弃了NPM,全面拥抱Yarn,这也导致了很多包需要重新下载,这不干完了活,准备再看一会vue,发现vue-cli也没了。

重新安装一遍吧~

1
2
3
4
5
6
7
8
9
10
11
12
13
yarn global add @vue/cli

yarn global v1.10.1
warning package.json: No license field
[1/4] 🔍 Resolving packages...
[2/4] 🚚 Fetching packages...
[3/4] 🔗 Linking dependencies...
warning "@vue/cli > @vue/cli-ui > graphql-type-json@0.2.1" has unmet peer dependency "graphql@>=0.8.0".
warning "@vue/cli > @vue/cli-ui > graphql-tag@2.10.0" has unmet peer dependency "graphql@^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0".
[4/4] 📃 Building fresh packages...
success Installed "@vue/cli@3.0.5" with binaries:
- vue
✨ Done in 13.30s.

Everything looks good

查看更多

分享到

springboot banner彩蛋

步骤:

  1. 新建Spring Boot工程
  2. 在/src/main/resources目录下创建一个banner.txt文件
  3. 将ASCII字符画复制进去,就能替换默认的banner了

查看更多

分享到

java8 HashMap之tableSizeFor

在1.8的HashMap中,有一个算法,它的功能是(不考虑大于最大容量的情况)
返回大于输入参数且最近的2的整数次幂的数

1
2
3
4
5
6
7
8
9
10
11
12
/**
* Returns a power of two size for the given target capacity.
*/
static final int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}

查看更多

分享到