小编dev*_*ull的帖子

后端到前端回调URL的Oauth2方法

我有一个前端 javascript (svelte) 和一个 go 后端 API。前端调用go后端URL从github生成OAuth2令牌。后端使用精心设计的 url 作为响应进行回复)

https://github.com/login/oauth/authorize?access_type=online&client_id=xxxxxxx&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fapi%2Fv1%2Fcallback&response_type=code&scope=user%3Aemail&state=state

该 url 由用户打开location.assign(authUrl);

实际的完整代码:

const authUrl = await fetch('http://localhost:8080/api/v1/authurl', {
  method: 'GET',
  headers: {
                'Content-Type': 'application/json'
            }
        }).then(res => res.json()).then(data => data.url);

// Redirect the user to the GitHub authorization URL
location.assign(authUrl);
Run Code Online (Sandbox Code Playgroud)

然后后端处理回调,然后执行交换并接收有效的 OAuth2 令牌(耶!)

从这里我需要通知客户交易已完成,但我不确定如何做到这一点(这是我坦白承认我在前端很糟糕并且没有太多经验的地方)。我决定向前端返回一个 httponly 会话 cookie,并将 GitHub OAuth2 令牌安全地存储在后端,但我应该如何将此令牌获取到前端以便它可以存储它?

请记住,没有从客户端获取数据,后端 API 通过回调启动。

我能做的一件事就是重定向;

cookie := &http.Cookie{
            Name:     "token",
            Value:    jwt_token,
            MaxAge:   3600,
            Path:     "/",
            Domain:   "localhost",
            Secure:   false,
            HttpOnly: true,
}
c.SetCookie(cookie.Name, cookie.Value, cookie.MaxAge, cookie.Path, cookie.Domain, …
Run Code Online (Sandbox Code Playgroud)

go node.js oauth-2.0 sveltekit

5
推荐指数
0
解决办法
671
查看次数

通过删除标头并将块解析为 GoLang 中的单行来格式化 x509 PEM

我有标准 x509 PEM 证书

-----BEGIN CERTIFICATE-----
MIICNzCCAd2gAwIBAgITPLBoBQhl1hqFND9S+SGWbfzaRTAKBggqhkjOPQQDAjBo
MQswCQYDVQQGEwJVSzESMBAGA1UECBMJV2lsdHNoaXJlMRMwEQYDVQQHEwpDaGlw
cGVuaGFtMQ8wDQYDVQQKEwZSZWRIYXQxDDAKBgNVBAsTA0NUTzERMA8GA1UEAxMI
dGVzdGNlcnQwHhcNMjEwMzEyMjMyNDQ5WhcNMzEwMjI4MjMyNDQ5WjBoMQswCQYD
VQQGEwJVSzESMBAGA1UECBMJV2lsdHNoaXJlMRMwEQYDVQQHEwpDaGlwcGVuaGFt
MQ8wDQYDVQQKEwZSZWRIYXQxDDAKBgNVBAsTA0NUTzERMA8GA1UEAxMIdGVzdGNl
cnQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQRn+Alyof6xP3GQClSwgV0NFuY
YEwmKP/WLWr/LwB6LUYzt5v49RlqG83KuaJSpeOj7G7MVABdpIZYWwqAiZV3o2Yw
ZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQU
T8Jwm6JuVb0dsiuHUROiHOOVHVkwHwYDVR0jBBgwFoAUT8Jwm6JuVb0dsiuHUROi
HOOVHVkwCgYIKoZIzj0EAwIDSAAwRQIhAJkNZmP6sKA+8EebRXFkBa9DPjacBpTc
OljJotvKidRhAiAuNrIazKEw2G4dw8x1z6EYk9G+7fJP5m93bjm/JfMCdF==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

我需要将主体剥离并放置在一条线上-----BEGIN CERTIFICATE----------END CERTIFICATE-----

现在我可以编写一些正则表达式来执行此操作,但我想知道是否已经有 GoLang 惯用的方法来执行此操作,也许使用 x509 或加密模块。我对文档进行了很好的搜索,但什么也没看到。

go x509

3
推荐指数
1
解决办法
1659
查看次数

如何处理空字典值

我有一个字典形式的json列表,以下允许我从字典中获取值:

valone = out['red']['blue']['green']

valtwo = out['purple']['yellow']['black']
Run Code Online (Sandbox Code Playgroud)

从那里我可以围绕valone或valtwo运行条件语句,看看它们是否是绿色的黑色.

现在这种方法很有效,当这些键被填充时,但是当它们不是我得到的时候

KeyError: 'black'
Run Code Online (Sandbox Code Playgroud)

这是我可以看到的值是空的.

我很难在声明dict值之前弄清楚如何过滤掉.

我见过人们的建议

out.get("black", None)
Run Code Online (Sandbox Code Playgroud)

但我不能访问黑色,因为我是它的第三个价值?

python dictionary keyerror

1
推荐指数
1
解决办法
94
查看次数

标签 统计

go ×2

dictionary ×1

keyerror ×1

node.js ×1

oauth-2.0 ×1

python ×1

sveltekit ×1

x509 ×1