Tôi rất ấn tượng với cách tạo đơn giản REST api trong Yii2 đơn giản như thế nào. Tuy nhiên, tôi gặp sự cố nhỏ khi hiểu Xác thực cơ bản. Nhu cầu của tôi là hoàn toàn đơn giản và tôi muốn giải pháp của tôi để làm theo.Yii2 REST Đơn giản hóa BasicAuth
Tôi cần xác thực mã thông báo cơ bản tại đây. Tôi thậm chí không chống lại hardcoding nó cho bây giờ, nhưng đây là những gì tôi đã làm cho đến nay.
Tôi có bảng cơ sở dữ liệu để giữ ApiAccess tôi ít token (id, access_token)
ApiAccess.php - Mô hình - LƯU Ý: IDE cho thấy lỗi cú pháp ở dòng đầu tiên này
class ApiAccess extends base\ApiAccessBase implements IdentityInterface
{
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
}
Mô-đun .php - trong hàm init()
\Yii::$app->user->enableSession = false;
Tôi đã tạo một ApiContro ller rằng mỗi danh từ tiếp theo kéo dài
ApiController.php
use yii\rest\ActiveController;
use yii\filters\auth\HttpBasicAuth;
use app\models\db\ApiAccess;
class ApiController extends ActiveController
{
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
];
return $behaviors;
}
}
Khi đứng, truy cập vào một thiết bị đầu cuối api trong trình duyệt sẽ nhắc cho một tên người dùng và mật khẩu. Yêu cầu thông qua REST Client hiển thị lỗi truy cập.
Làm cách nào để kết hợp đúng HttpBasicAuth với mô hình ApiAccess của tôi?
HOẶC
Làm thế nào để hardcode một access token api? (Tùy chọn đầu tiên rõ ràng là tốt nhất)
Tôi có tính năng này hoạt động và xem nó hoạt động như thế nào bây giờ. Cảm ơn bạn. Tôi vẫn gặp sự cố liên quan đến việc ghi đè xác thực LDAP đã có tại chỉ cho mô-đun này. Tôi sẽ đăng một câu hỏi riêng nếu tôi không thể tự mình giải quyết nó. – Joshua
findOne không mã hóa mật khẩu để xem nó có khớp với password_hash không - làm cách nào để kết hợp validatePassword với findOne? – Cymbals
@Cymbals http://www.yiiframework.com/doc-2.0/guide-security-passwords.html –