auth和share
现在内网分成3个服务,share,blog,auth。share是分享,blog是博客,那么auth就是用户身份验证系统,主要功能是注册,登录,保存用户信息,查看用户信息。下面来讲讲它们是如何工作的。(以share和auth为例)
auth作为用户身份验证,它是验证的中心,它是唯一保存的密码的地方的,所以注册和登录应该调用auth的api。但是share中也有登录和注册的api,这是为了让auth中的用户能和share中用户对接,保持一致。当用户在希望注册之后发分享时,首先需要在share中调用注册api注册,显示为分享的发送者,而auth是用户身份验证的中心,保存着所有用户,自然也要为该用户注册,保存该用户的密码。所以当用户点击注册时,实际上,调用了2个api,share中注册api和auth中的注册api。
同理,用户点击登录时,同样调用了2个api ,share中登录api和auth中登录api。首先调用auth的登录api,auth保存了用户的密码,用来验证用户身份,一旦验证成功,就表明登录成功,再调用share的登录api,获取token,如果token没有过期,后续则一直使用token作为用户发送分享,发表评论的身份凭证。
这样做的主要目的是统一代码的逻辑,把注册登录的代码都保存于auth,把分享相关的代码放在share中,把博客相关的代码放在blog中,有利于代码维护,逻辑更清晰。
解决跨域
注册和登录时都要调用2个api,以注册为例,分别是
auth.muxixyz.test:5499/signup/
share.muxixyz.test:5488/api/v2.0/signup/
只要协议、域名、端口有任何一个不同,都被当作是不同的域。这两个api的域不一样,不能在同一个页面访问,怎么办呢?
以木犀通行证为例,木犀通行证是首页是
https://user.muxixyz.com/?landing=gs.muxiyxz.com
当点击登录时,登录成功后,跳转为:
https://gs.muxiyxz.com/?email=xxxx@qq.com
xxxx@qq.com时刚才输入的用来登录的email,可以看出这里的user.muxixyz.com 和gs.muxixyz.com是不同的域,但是却可以在同一个页面内访问,所以,通过这种方式可以解决跨域的问题。
同理:
auth.muxixyz.test:5499/signup/?landing=share.muxixyz.test:5488/api/v2.0/signup/
点击注册,跳到auth.muxixyz.test:5499/signup/ , 调用 auth的注册api ,在 auth中注册,然后跳转到share.muxixyz.test:5488/api/v2.0/signup/,调用share的注册api, 利用从auth获得的username,email,password在share注册。