harbor
  • Introduction
  • 安装
  • API
  • harbor数据库
  • 镜像与源码项目
  • UI
    • user
      • GET_/users
    • Router
    • Controller-API
      • user
      • project
      • member
      • repository
      • base.go
  • JobService
  • secretkey
  • 日志
Powered by GitBook
On this page
  • API定义
  • router
  • controller与处理函数
  • 获取Header中的用户名与密码
  • 验证用户名与密码
  • 判断是否系统用户

Was this helpful?

  1. UI
  2. user

GET_/users

API定义

GET /users
  • 说明

该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()函数的定义,如下:

PrevioususerNextRouter

Last updated 4 years ago

Was this helpful?