我应该在使用 Yii 2 开发的 api 中使用什么身份验证?
What authentication should I use in an api developed with Yii 2?
我对 Yii Framework 中的 REST API 身份验证有疑问。在登录端点,用户必须输入电子邮件和密码,如果他匹配服务器上的数据,returns 一个访问令牌,该令牌是否会用于其他端点?是这样还是我理解错了?
如果是这样,登录身份验证是否应该与其他端点不同?在每种情况下我应该使用什么身份验证?
HttpBasicAuth
HttpBearerAuth
QueryParamAuth
我的另一个问题是关于注册端点,它不应该有任何身份验证吗?我如何保护此 url 以防止用户伪造多个记录?
确保您的控制器是从 yii\rest\Controller
或 yii\rest\ActiveController
扩展而来的。
对于登录和注册,您应该提交 POST 请求并验证用户输入。为避免多个虚假记录,您可以验证电子邮件或 phone 号码应该是唯一的,并通过发送确认 link 或代码。
对于其他需要身份验证的控制器,您可以使用
HttpBearerAuth::className()
或 QueryParamAuth::className()
在 HttpBearerAuth::className()
的情况下,我们必须在授权 header 中传递访问令牌,例如 Authorization: Bearer <access token here>
在 QueryParamAuth::className()
的情况下,我们必须在请求 url 中传递访问令牌作为参数,例如 api-url?access-token=.
您可以像这样将身份验证方法添加到您的控制器
use yii\filters\auth\HttpBearerAuth;
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
];
return $behaviors;
}
我对 Yii Framework 中的 REST API 身份验证有疑问。在登录端点,用户必须输入电子邮件和密码,如果他匹配服务器上的数据,returns 一个访问令牌,该令牌是否会用于其他端点?是这样还是我理解错了?
如果是这样,登录身份验证是否应该与其他端点不同?在每种情况下我应该使用什么身份验证?
HttpBasicAuth
HttpBearerAuth
QueryParamAuth
我的另一个问题是关于注册端点,它不应该有任何身份验证吗?我如何保护此 url 以防止用户伪造多个记录?
确保您的控制器是从 yii\rest\Controller
或 yii\rest\ActiveController
扩展而来的。
对于登录和注册,您应该提交 POST 请求并验证用户输入。为避免多个虚假记录,您可以验证电子邮件或 phone 号码应该是唯一的,并通过发送确认 link 或代码。
对于其他需要身份验证的控制器,您可以使用
HttpBearerAuth::className()
或 QueryParamAuth::className()
在 HttpBearerAuth::className()
的情况下,我们必须在授权 header 中传递访问令牌,例如 Authorization: Bearer <access token here>
在 QueryParamAuth::className()
的情况下,我们必须在请求 url 中传递访问令牌作为参数,例如 api-url?access-token=.
您可以像这样将身份验证方法添加到您的控制器
use yii\filters\auth\HttpBearerAuth;
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
];
return $behaviors;
}