访问令牌
有两种类型的令牌可用于在 Directus 中进行身份验证。
临时令牌 (JWT) 由 登录 端点/突变返回。这些令牌的到期时间相对较短,因此是最安全的选择。令牌返回一个 refresh_token
,可用于通过 刷新 端点/突变检索新的访问令牌。
静态令牌可以为每个平台用户设置,并且永不过期。它们不太安全,但对于服务器到服务器的通信非常有用。它们以纯文本形式保存在 directus_users.token
中。
获得访问令牌后,有两种方法可以将其传递给 API,通过 access_token
查询参数或在请求的授权标头中。
查询参数
?access_token=<token>
授权标头
Authorization: Bearer <token>
登陆
检索临时访问令牌和刷新令牌。
请求正文
email
Required
要为其检索访问令牌的用户的电子邮件地址。
password
Required
用户的密码。
otp
用户的一次性密码(如果启用了 )FA)。
mode
是在 JSON 响应中检索刷新令牌?还是在httpOnly
secure
Cookie 中检索刷新令牌。
json
或cookie
。默认值为json
。
响应属性
access_token
string
在后续请求中使用的临时访问令牌。
expires
integer
访问令牌过期前多长时间。值以毫秒为单位。
refresh_token
string
可用于通过 /auth/refresh
检索新访问令牌的令牌。注意:如果您在请求中使用 cookie
作为模式,则 JSON 中不会返回刷新令牌。
到期时间
可以通过 ACCESS_TOKEN_TTL
环境变量 配置令牌的过期时间。
REST API
POST /auth/login
POST /auth/login/:provider
{
"email": "admin@example.com",
"password": "d1r3ct5us"
}
GraphQL
POST /graphql/system
mutation {
auth_login(email: "admin@example.com", password: "d1r3ctu5") {
access_token
refresh_token
}
}
刷新
使用刷新令牌检索新的访问令牌。
请求正文
refresh_token
要使用的刷新令牌。如果通过 '/auth/login'在 Cookie 中拥有刷新令牌,则无需在此处提交。
mode
是否在 JSON 响应中或在 httpOnly
secure
cookie 中检索刷新令牌。 json
、cookie
之一。
Response Attributes
access_token
string
在后续请求中使用的临时访问令牌。
expires
integer
访问令牌将在多长时间内过期。值以毫秒为单位。
refresh_token
string
可用于通过 /auth/refresh
检索新访问令牌的令牌。注意:如果您在请求中使用cookie
作为模式,则不会在 JSON 中返回刷新令牌。
REST API
POST /auth/refresh
{
"refresh_token": "gmPd...8wuB"
}
GraphQL
POST /graphql/system
mutation {
auth_refresh(refresh_token: "abc...def", mode: json) {
access_token
refresh_token
}
}
登出
使刷新令牌无效,从而破坏用户的会话。
请求正文
refresh_token
要失效的刷新令牌。如果通过 '/auth/login'在 Cookie 中拥有刷新令牌,则无需在此处提交。
REST API
POST /auth/logout
{
"refresh_token": "gmPd...8wuB"
}
GraphQL
POST /graphql/system
mutation {
auth_logout(refresh_token: "gmPd...8wuB")
}
请求密码重置
请求将密码重置电子邮件发送给给定用户。
请求正文
email
Required
您为其请求密码重置的用户的电子邮件地址。
reset_url
提供电子邮件中的链接将指向的自定义重置 URL。重置令牌将作为参数传递。
注意:您需要配置 PASSWORD_RESET_URL_ALLOW_LIST
环境变量才能启用此功能。
REST API
POST /auth/password/request
{
"email": "admin@example.com"
}
GraphQL
POST /graphql/system
mutation {
auth_password_request(email: "admin@example.com")
}
重置密码
请求密码重置终结点会发送一封电子邮件,其中包含指向管理应用(或自定义路由)的链接,而管理应用(或自定义路由)又使用此终结点来允许用户重置其密码。
请求正文
token
Required
密码重置令牌,如请求终结点发送的电子邮件中提供的那样。
password
Required
用户的新密码。
REST API
POST /auth/password/reset
{
"token": "eyJh...KmUk",
"password": "d1r3ctu5"
}
GraphQL
POST /graphql/system
mutation {
auth_password_reset(token: "eyJh...KmUk", password: "d1r3ctu5")
}
列出身份验证提供者
列出所有已配置的身份验证提供程序。
配置身份验证提供程序
要了解有关设置身份验证提供程序的详细信息,请查看配置身份验证提供程序.
响应属性
data
Array
配置的身份验证提供程序的数组。
disableDefault
boolean
是否禁用默认身份验证提供程序。
GET /auth
{
"data": [
{
"name": "GitHub",
"driver": "oauth2",
"icon": "github"
},
{
"name": "Google",
"driver": "openid",
"icon": "google"
},
{
"name": "Okta",
"driver": "openid"
}
],
"disableDefault": false
}
使用单点登录提供程序登录
将重定向到配置的 SSO 提供程序以供用户登录。
GET /auth/login/:provider