Files
wts/back/doc/auth.md
2026-02-26 19:22:38 +08:00

19 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 鉴权
本系统通过微信的OpenID来唯一标识一个用户鉴权系统的本质就是获取可信真实的OpenID而不是随便就可以冒用其他微信用户的OpenID
## 公众号聊天界面
用户在公众号聊天的时候发给我们的信息首先会发到微信的服务器微信根据用户的身份夹带一些额外信息连同原始的消息发给我们。这些夹带的信息中就有OpenID。由于这些信息是微信服务器发给我们的用户发给服务器的只有他们的消息所以我们可以直接信任这些OpenID聊天栏可以输入一些特殊指令用来替代报修系统Web界面的操作。
## 微信OAuth2.0认证方法
> 代码位于`src/handler/wechat.go`下
首先,前端将用户重定向到`/api/v3p/wx/auth`下,这个界面会做一些工作,让用户带上公众号的信息,再将用户跳转到微信的认证界面。
微信看到用户的请求,就知道是我们的公众号在把用户引导到这里,于是询问用户是否授权我们的报修系统获取用户的个人信息。
用户同意之后,微信会将用户跳转到`/api/v3p/wx/authsuccess`如果同意的话微信会附带一个code在请求中
这个code就可以让我们的公众号向微信服务器获取这个用户的信息
具体的流程自己看一下源码,和微信的官方文档~
> 我们不信任用户发过来的信息不知道是不是用户随便瞎编的一个数据用户那边也同理。但是我们信任微信服务器发来的数据用户也不能向微信发送假数据。那么我们就通过微信来和用户交换数据这个就是第三方OAuth2.0的原理