如何解决试图在用户 [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 举报,一经查实,本站将立刻删除。