微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图在用户 [Symfony 3.4] FOSUserBundke+Lexik+FosRest 中获取 loogged 时获得匿名

如何解决试图在用户 [Symfony 3.4] FOSUserBundke+Lexik+FosRest 中获取 loogged 时获得匿名

我是 symfony 的新手,并试图实现一个身份验证服务,该服务允许我为我的 angular 应用程序注册+登录+获取登录用户登录就像一个魅力,获得令牌并成功连接到应用程序,但是当我尝试通过令牌获取登录用户时,当我在邮递员中测试时得到“匿名”,这有点奇怪,因为我检查了所有相关在 github/stackoverflow 中发布,但没有一个工作,我现在被困了 6 个小时。这是我的一些代码

我的控制器中的方法

/**
     * @Route("/get/profile",name="api_get_user")
     * @Method("POST")
     */
    public function getUserAction()
    {
 
        $user = $this->get('security.token_storage')->getToken()->getUser();
 
        $serializer = $this->get('jms_serializer');
        $jsonContent = $serializer->serialize($user,'json');
 
        $response = new Response(json_encode(array('response' => 'OK','data'=> $jsonContent)));
        $response->headers->set('Content-Type','application/json');
        return  $response;
    }

我的安全.yml :

# To get started with security,check out the documentation:
# http://symfony.com/doc/current/book/security.html
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt
 
    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN
 
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email
 
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
 
        healthcheck:
            pattern: ^/ping$
            anonymous: true
 
        api_docs:
            pattern: ^/doc
            anonymous: true
 
        api_register:
            pattern: ^/register
            anonymous: true
 
        api_password_reset:
            pattern: ^/password/reset
            anonymous: true
 
        login:
            pattern:  ^/api/login
            stateless: true
            anonymous: true
            form_login:
                check_path:               /api/login_check
                require_prevIoUs_session: false
                username_parameter:       username
                password_parameter:       password
                success_handler:          lexik_jwt_authentication.handler.authentication_success
                failure_handler:          lexik_jwt_authentication.handler.authentication_failure
 
 
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator : security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
 
 
            logout: true
            anonymous: true
 
    access_control:
 
        - { path: ^/login,role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register,role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting,role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/,role: ROLE_ADMIN }
        - { path: ^/api/login,roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,roles: IS_AUTHENTICATED_FULLY }

我的用户类:

<?PHP
 
namespace AppBundle\Entity;
 
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use JMS\Serializer\Annotation as JMSSerializer;
 
/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
  */
class User extends BaseUser
{
    /**
     * User constructor.
     */
    public function __construct()
    {
        parent::__construct();
    }
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * @JMSSerializer\Expose
     * @JMSSerializer\Type("string")
     * @JMSSerializer\Groups({"users_all","users_summary"})
     */
    protected $id;
 
    /**
     * @JMSSerializer\Expose
     * @JMSSerializer\Type("string")
     * @JMSSerializer\Groups({"users_all","users_summary"})
     */
    protected $username;
 
    /**
     * @var string The email of the user.
     *
     * @JMSSerializer\Expose
     * @JMSSerializer\Type("string")
     * @JMSSerializer\Groups({"users_all","users_summary"})
     */
    protected $email;
 
 
}

正如我在邮递员中所说的,当我放入令牌时,我得到了 anon 作为回应,它意味着匿名,我不知道为什么。 谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。