1.keycloak~自定义rest接口2.keycloak~docker部署https的keycloak使用自定义证书3.keycloak~扩展事件机制,集成kafka中间件4.keycloak~nginx实现的https转发5.keycloak~使用JDBC_PING实现k8s里的高可用6.keycloak~为认证提供者添加配置项7.keycloak~再说session和token8.keycloak~JWT各字段说明及扩展字段的方法9.keycloak~uma远程资源授权对接asp.net core10.keycloak~授权功能的使用11.keycloak~避免出现"用户已登录"的界面12.keycloak~记住密码实现关闭浏览器用户状态保持原理13.keycloak~大数据量时坑出现~索引的坑14.keycloak~自定义登出接口
15.keycloak~时间不正确的问题
16.keyclaok~keycloak存到cookie中的值和session_state17.keyclaok~web安全防护18.keycloak~JWT没有被持久化_是因为你对方法论理解不到位19.keycloak~RFC知识的了解20.keycloak~资源的远程授权21.keycloak~自定义directgrant直接认证22.keycloak~jconsole监控wildfly和jboss23.jboss~静态文件路由和自定义日志24.keycloak~11.3.0之后微信认证问题解决25.keycloak~缓存的使用26.keycloak~KEYCLOAK_REMEMBER_ME中文用户名问题新版已经解决27.keycloak~管理平台的查询bug与自定rest中文检索28.跨域Cookie的读取29.keycloak~账号密码认证和授权码认证30.keycloak~OIDC&OAuth2&自定义皮肤31.keycloak~自定义SPI的注入与扩展32.keycloak集成微信登陆~解决国内微信集成的问题33.keycloak~自定义redirect_uri的方法首先我们应该知道,写到数据库里的时间,主要和你的mysql时区system_time_zone有关,而把mysql里的数据取出来,以json形式响应到浏览器上,这个时间会经过反序列化的过程,这时时间和注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")有关。
和我们相关的几个时区
- UTC: Coordinated Universal Time, 国际协调时间,也称世界标准时间。
- GMT:Greenwich Mean Time, 格林尼治时间
- CST:中国标准时间(China Standard Time),为GMT+8
- BST:英国夏令时间,为GMT+1
- CST:美国中部时间(Central Standard Time),为GMT-6,正常比北京慢14小时,夏令时慢13小时
- 东八区:GMT+8
数据库时区
1、首先查看MySQL当前的时间
select curtime();
show variables like "%time_zone%";
time_zone说明mysql使用system的时区,system_time_zone说明system使用CST时区
2、进行修改
set global time_zone = '+8:00'; #修改mysql全局时区为北京时间,也就是我们所在的东8区
set time_zone = '+8:00'; #修改当前会话时区
flush privileges;
直接在数据库连接串上添加时区
serverTimezone=GMT%2B8 #表示东八区
为代码添加对象的时区注解
@Column(name = "EXPIRE_DATE")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date expireDate;
修改k8s中pod的时区
...
containers:
- name: xxx
env:
- name: TZ
value: Asia/Shanghai
...
volumeMounts:
- name: timezone
mountPath: /etc/localtime
volumes:
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
总结
事实上,数据库里的时间与显示出现的时间不一致,与pod的时间没关系,主要还是看你的数据库时区与@JsonFormat注解的时区。
- 如果@JsonFormat如果是GMT+8,而连接串里是GMT+0,会出现下面截图


- 如果@JsonFormat如果是GMT+8,连接串里也是GMT+8,会出现我们想要的截图


- 最后,如果@JsonFormat如果是GMT+8,连接串里也是CST(可能被认为是美国中部时间,GMT-6),那么它将会比北京时间慢8+6小时

