你好,
我从 Symfony 开始,我试图让用户看到其他用户的个人资料。
我的个人资料模板每个人都一样,信息的显示是根据URL参数传入的用户名。如果会话中的用户名和参数中的用户名对应,我只是在树枝上进行比较。
例如在我的个人资料视图中:
{% if app.user.username == userAccount.username %}
我的简历{% 别的 %}
{{ userAccount.username }} 个人资料{% 万一 %}
我的路由帐户的索引方法:
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();}}
这是验证用户是否正确的可靠方法吗?
我不知道我的做事方式是否好,所以如果有人可以启发我,以便我可以继续或调整我的工作。
谢谢 !