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