如何检查用户是否已登录 Symfony?

Car*_*tru 2 symfony

我得到了这个表格:

{{ form_start(form) }}
        <input type="submit" class="form_submit_button" name="register_interest" value="Add to favourites"/>

        {{ form_end(form) }}
Run Code Online (Sandbox Code Playgroud)

我想检查用户是否登录,我这样做了:

 {% if is_granted('IS_AUTHENTICATED_FULLY') %}
Run Code Online (Sandbox Code Playgroud)

如果用户未登录,它会隐藏按钮。

即使我没有登录,我也希望该按钮显示,并且在提交表单后检查用户是否已登录。

我怎样才能做到这一点?

谢谢!

Kar*_*lis 5

该检查必须在您的 php 控制器中执行。此外,您还可以执行 javascript 检查,以防止在用户未登录时提交表单。

要检查控制器中的用户登录:

 if ($this->isGranted('ROLE_USER') == false) {
      // show some error message, throw exception etc...
  }
Run Code Online (Sandbox Code Playgroud)

另一种方法来做到这一点:

$this->denyAccessUnlessGranted('ROLE_USER');
Run Code Online (Sandbox Code Playgroud)

要检查客户端(javascript),您可以执行以下操作:

{% if not is_granted('IS_AUTHENTICATED_REMEMBERED') %}

<script>
  // wrap into document.ready() if needed
  $('#your_submit_button_id').on('click', function(e) {
    e.preventDefault();
    alert('You must be logged in to use this function');
  });
</script>

{% endif %}
Run Code Online (Sandbox Code Playgroud)