Bonjour,
Я начинаю с Symfony и пытаюсь заставить пользователей видеть профиль других пользователей.
Шаблон моего профиля одинаков для всех,отображение информации основано на имени пользователя, переданном в параметрах URL.Я просто сравниваю ветку, если имя пользователя в сеансе и имя в параметрах соответствуют.
Например, в моем представлении профиля:
{% if app.user.username == userAccount.username%}
Мой профиль
{% else%}
{{userAccount.username}} profile
{% endif%}
Мой метод индекса дляучетная запись маршрута:
public function index($username, UserRepository $repo, Request $request{
$user = $repo->findUserByUsername($username);
if (!$user){throw $this->createNotFoundException();}
Я получаю пользователя в BDD по его имени.Проблема в том, что я действительно получаю все обратно, и я хотел бы знать, если это безопасно?Может кто-нибудь каким-либо образом перехватить запрос и просмотреть всю полученную информацию?
Затем я создаю страницу смены пароля, маршрут всегда принимает имя пользователя в качестве параметра.Однако на этот раз в моем контроллере я указал, что необходимо перенаправить пользователя в случае, когда его имя пользователя в сеансе не было идентично имени для передачи параметров.
public function changePassword($username, Request $request, UserPasswordEncoderInterface $passwordEncoder, ObjectManager $manager, \Swift_Mailer $mailer){
$user = $this->getUser();
if ($username == null){
$username = $user->getUsername();}
if ($user->getUsername() !== $username){
throw $this->createNotFoundException();}}
Это верный путьчтобы убедиться, что пользователь является правильным?
Я не знаю, хорош ли мой способ ведения дел, так что если кто-то сможет просветить меня, чтобы я мог продолжить или адаптировать свою работу.
Спасибо!