GET_/users
API定义
说明
该API用来获取所有的用户信息,只有系统用户才有权限调用该API。
query参数
参数名
类型
必需
说明
username
string
否
用户过滤
返回值模型
router
该API匹配到的路由为
controller与处理函数
根据上面的匹配路由可以知道,该API对应的处理函数为 UserAPI 控制器中的 Get() 函数。
UserAPI的结构体定义如下:
获取Header中的用户名与密码
UserAPI中有一个Prepare()函数,重写了beego.Controller的Pepare()函数(beego.Controller中该函数的实现为空)。Preare()函数会在Get()函数之前执行。在Prepare()函数中获取Header中的用户代码如下:
我们继续看UserAPI的ValidateUser()这个函数,该函数其实是BaseAPI中的一个函数,但UserAPI继承了BaseAPI。该函数的定义如下:
我们继续看BaseAPI的GetUserIDForRequest()函数,如下。代码的第(2)行从Header参数中获取username、password
验证用户名与密码
我们继续看BaseAPI的GetUserIDForRequest()函数,如下。代码的第(2)行先从Header参数中获取username、password,代码第(5)行验证username与password是否正确
我们继续看auth.Login()
函数,该函数的定义如下:
第3行从配置中读取认证模式(结果为db_auth
)。第13行还没看懂。第17行根据认证模式获取对应的认证器,其中registry变量的定义如下:
Authenticator
是一个interface,定义如下:
而registry["db_auth"]
的值为一个Auth类型的对象,该结构体的定义如下(在ui/auth/db/db.go
中),它实现了接口Authenticator的函数Authenticate:
我们来看的Auth
的Authenticate
函数中的dao.LoginByDb(m)
函数,LoginByDb函数定义在common/dao/user.go
中,函数定义如下:
代码的第5行根据username从数据库中查询出用户,代码的第(16)行验证密码是否正确
判断是否系统用户
上面的流程验证了Header中的用户与密码,接下来,要判断该用户是否为系统用户。
在UserAPI的Prepare函数中有如下一行代码:
我们继续查看dao.IsAdminRole()
函数的定义,如下:
Last updated
Was this helpful?