Windows Terminal添加右键菜单
前言
关于Windows Terminal
的配置,后面有空再讲。
今天要说的是如何实现在当前目录打开Windows Terminal
,类似Mac
上的Go2Shell
效果。
关于Windows Terminal
的配置,后面有空再讲。
今天要说的是如何实现在当前目录打开Windows Terminal
,类似Mac
上的Go2Shell
效果。
JVM思维导图
使用hexo
构建博客大概是5、6年的事了,在此之前一直使用wordpress
来搭建个人的博客。
而早些年博客系统仿佛也只有wordpress
,当你想要搭建个人博客时,你只会得到一个答案,那就是wordpress
。
wordpress
是如此强大,丰富的扩展,强大的管理后台,它能提供我们需要的一些。
毫无疑问,这就是我们需要的,何况全世界的人都在使用它。
然而,当面对繁杂而厚重的wordpress
时,我们意识到我们需要的只是一个简单的,优雅的,能使用markdown
书写的系统。
关于手机端登录的代码,这里不做多余介绍,我们看下登录成功后, Apple
返回给手机端的一些参数
open var user: String { get }
open var state: String? { get }
open var authorizedScopes: [ASAuthorization.Scope] { get }
open var authorizationCode: Data? { get }
open var identityToken: Data? { get }
open var email: String? { get }
open var fullName: PersonNameComponents? { get }
open var realUserStatus: ASUserDetectionStatus
这里初步登录成功,从 Apple
拿到 user
、 identityToken
、 authorizationCode
等相关信息。
identityToken
是一个 JWT
格式的加密数据 (JWT相关知识介绍 JSON Web Token
),我们通过如下代码拿到 header
和 payload
中的数据
guard let _ = identityToken else { return }
let token = String(data: identityToken!, encoding: .utf8)
let arr = token?.components(separatedBy: ".")
let header = arr?[0]
let payload = arr?[1]
header
及 payload
均是base64编码的字符串,通过如下代码进行解码
注意:swift中需要用NSData进行转换,用Data进行转换会失败
// 这里为了方便,均采用 ! 强行解包
let headerData = NSData(base64EncodedString: payload!)
let decodeHeader = String(data: (headerData! as Data), encoding: .utf8)
let payloadData = NSData(base64EncodedString: payload!)
let decodePayload = String(data: (payloadData! as Data), encoding: .utf8)
得到结果如下
header:
{"kid":"AIDOPK1","alg":"RS256"}
payload:
{"iss":"https://appleid.apple.com","aud":"这个是你的app的bundle identifier","exp":1567482337,"iat":1567481737,"sub":"这个字段和上面获取的 user 字段是完全一样的","c_hash":"8KDzfalU5kygg5zxXiX7dA","auth_time":1567481737}
通过如上操作,我们可以获取到 payload
中的 sub
字段,然后与上面的 user
字段做一个对比,如果对比通过,则第一步完成