Tôi đang gặp rắc rối với các hành động sau "/ login" hành động tuyến đường trong lớp UsersController tôiYii2 Rest - Tác vụ tùy chỉnh và OPTIONS phương pháp
public function actionLogin(){
$data = Yii::$app->getRequest()->getBodyParams();
$model = new Usuario();
//Validamos que se hayan recibido los campos
if(empty($data['email']) || empty($data['password'])){
throw new \yii\web\BadRequestHttpException("Debe ingresar email y password");
}
//Validamos usuario y contraseña
$usuario = $model->findByUsername($data['email']);
if(empty($usuario) || !$usuario->validatePassword($data['password'])){
throw new \yii\web\UnauthorizedHttpException("Usuario y/o contraseña incorrectos");
}
return $usuario;
}
Tình hình là tôi đang sử dụng phương thức POST để thực hiện đăng nhập , và tôi gọi tuyến đường này từ một tên miền khác nhau, do thư viện frontend đầu tiên cố gắng gọi/route đăng nhập với phương pháp OPTIONS để kiểm tra nếu nó được cho phép hay không để gọi/đăng nhập với POST ..
vấn đề là rằng chức năng tích hợp của phần còn lại yii2 ActiveController chỉ dành cho/người dùng và/người dùng/{id}
Nếu tôi thêm thủ công/tuyến đăng nhập này để có sẵn trong cả POST và OPTIONS thông qua hành động verbFilter, thì yii Đang cố gắng thực sự gọi hành động đăng nhập với yêu cầu OPTIONS. Ý tôi là, nó đang cố gắng thực hiện đăng nhập. Tất nhiên nó không thể, bởi vì nó không gửi các trường email và mật khẩu, nhưng tôi có thể thấy một lỗi trong tệp nhật ký.
Vì vậy, câu hỏi của tôi là ... Có cách nào để định cấu hình chính xác hành động tuyến đường "tùy chỉnh" này và làm cho OPTIONS hoạt động một cách minh bạch không? Bởi vì tôi hy vọng rằng hành động đăng nhập đó sẽ không được thực hiện khi gọi nó với OPTIONS, nhưng thay vào đó để trả về trực tiếp các tiêu đề phương thức được phép OPTIONS.
Cập nhật Thông tin: quy tắc quản lý thêm URL
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => true,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => ['v1/users'],
'pluralize' => false,
'tokens' => [
'{id}' => '<id:\\w+>'
]
],
//Rutas usuario
'v1/login' => '/v1/users/login'
],
],
@CreatorR Tôi đã thử giải pháp của bạn nhưng nó không hoạt động bởi vì, tôi nghĩ rằng, bạn không hiểu câu hỏi của tôi .. Loking tại mã nguồn của phần còn lại ActiveController, tôi thấy rằng một 'yii \ rest \ OptionsAction' hành động được cấu hình cho phương pháp tùy chọn .. Có cách nào để cấu hình khi gọi/đăng nhập với POST nó gọi actionLogin và khi gọi/đăng nhập với OPTIONS sau đó nó gọi là 'yii \ rest \ OptionsAction'? Cách nào tốt nhất để đạt được điều đó? Tôi nghĩ rằng đây là những gì tôi cần .. – edrian
@edrian, sẽ là tuyệt vời để xem các quy tắc urlManager của bạn – CreatoR
@CreatorR Tôi đã cập nhật bài đăng khi bạn yêu cầu – edrian