[英]FosUserBundle with REST API password change - Symfony 4
將此問題發布在github問題上,但實際上它可能屬於這里。
我正在穩步將Symfony應用程序升級到S4,並且在通過REST API更改密碼方面遇到了一些障礙。
我目前擁有的當前控制器從FosUserBundle一個( ChangePasswordController.php
)中進行了一些更改,尤其是禁用了csrf,當然還返回了json響應,而不是渲染了模板。
通過S4的新更改,我得到了預期的服務錯誤,但是不幸的是,這些錯誤似乎無法通過依賴注入來修復。 出錯的是FOS\\UserBundle\\Form\\Factory\\FactoryInterface
我得到“無法自動裝配服務”。
我知道這不會改變,但我也渴望找到前進的道路。 今后通過REST API更新用戶密碼的推薦方法是什么?
到目前為止,我的想法是:
UserManager
設置setPlainPassword
這是一個不好的方法嗎?
Symfony 4方法
UserController.php
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class UserController extends Controller {
...
public function appUsersPasswordChange(Request $request, UserPasswordEncoderInterface $encoder){
$user = $this->getUser();
$currentPassword = $request->request->get('current_password');
/* Checking current user password with given password param from $reqest */
$passwordValid = $encoder->isPasswordValid($user,$currentPassword );
if($passwordValid){
($request->request->get('new_password')) ? $user->setPassword($encoder->encodePassword($user, $request->request->get('new_password'))) : '';
$this->em->persist($user);
$this->em->flush();
}else{
return $this->errorResponse('Mismatch current password', $passwordValid );
}
return $this->successResponse('Successfully changed password', $passwordValid );
}
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.