Learning

2024-01-25|Idea和zsh快捷键

今天做了什么:

  1. 整理 Idea 快捷键
  2. 整理 zsh 中定义的常用的快捷键

Idea 快捷键

  • 使用快捷键 command +1 打开 Project 窗口
  • 输入 control + R 可以运行 Java 代码

上下文

  • 在 for 方法上,输入 option + enter,可以调出上下文,替换 for 表达式
  • 在字符串上面输入 option + enter,可以调出上下文。
  • 在字符串上面或者双击选中,然后双击两次 ⇧ ,打开 Search Everywhere 弹窗,然后输入 case ,选择 Toggle Case 将 AVERAGE 变为小写。
  • 在没有使用的方法参数 redundant 上,输入 option + enter,可以选择 Safe delete 'redunant' 删除该参数
  • 在三目运算,输入 option + enter,可以选择 Negate '?:'

搜索

  • 查找最近文件:comand + E
  • 输入 ⇧ + command + A 可以打开 Find Action 窗口。
  • 双击两次 ⇧ 可以打开 Search Everywhere 窗口。输入关键字,可以搜索 java 类。
  • 如果想搜索Java类,则可以输入 command + O,并可以选择在 All Places 搜索。
  • 如果想搜索方法或者变量名称,则可以使用 option + command + O

自动补全

  • command + ↑ + enter 补全方法体、if、while、for 、switch 后面括号

2023-12-28|今天做了什么

今天做了什么:

  • 重构微服务项目中使用 spring-security-oauth2 搭建 OAuth2 认证服务和资源服务的代码,减少其他模块对此的耦合度。计划将 spring-security-oauth2 迁移到 spring-security-oauth2-authorization-server 上,即使用 OAuth2.1 授权和认证。Spring Authorization Server 相关文档,可以参考 https://blog.51cto.com/u_15268610/category2
  • xuxiaowei-cloud master 分支源代码,整理 /login 登陆逻辑,参数:username、password、tenantId、clientId

登陆成功

2023-12-27|今天做了什么

今天做了什么:

  • 微服务项目中认证服务器配置授权码模式,并测试通过
    • 扩展 RedisAuthorizationCodeServices ,支持设置过期时间。
      • 注意:OAuth2Authentication 无法从 json 反序列化,故无法使用 JSON 反序列化类,只能使用 JDK 反序列化类。
    • 扩展 BearerTokenExtractor,支持从 request 请求的 header 中读取 access_token
    • 配置 JWK token 使用时
      • 扩展 JwtAccessTokenConverter ,用于解析 jwks 接口返回的 json,相关说明参考 creating-the-jwk-set-endpoint
      • JwkDefinitionSource 类中获取 jwkSetUrls 时,不支持 url 中配置服务名称,即不支持负载均衡。故,重写该类以支持通过 RestTemplate (可以注入一个支持负载均衡的 RestTemplate) 解析 jwkSetUrls 返回的 json 类型的字符串;创建了一个支持负载均衡的 TokenStore。
  • 运行 xuxiaowei-cloud 项目时
    • 提示 Rollup failed to resolve import "@vue/shared",原因:这个错误是由于无法解析到 @vue/shared 这个包导致的。@vue/shared 是 Vue 内部使用的一个共享工具库。解决方案:将 @vue/shared 添加到项目的依赖中。
      npm install --save @vue/shared
      
    • Controller 的方法上添加注解判断是否有权限,例子: @PreAuthorize("hasAuthority('manage_user_authority') or #oauth2.hasScope('manage_user_authority')")
    • Principal 中的用户对象,即 UserDetails 对象不添加额外字段,只有 username,如果想获取用户信息,需要通过用户服务去查询。

关于 OAuth2 的参考资料: