我正在尝试创建自己的用户捆绑包,目前正在登录阶段苦苦挣扎,并显示错误消息:
由于系统问题,无法处理身份验证请求。
我是Symfony的新手,我正尽力学习尽可能多的方面,所以如果我在定义内容时走错了路,请原谅我。
我目前有2个捆绑包,一个用于我的应用程序,名为ScoreboardBundle,另一个专用于名为Pulsahr \ UserBundle的身份验证机制。我打算在我的另一个项目中重新使用这个包 我想使用的用户实体是ScoreboardBundle \ Entity \ User,并继承自Pulsahr \ UserBundle \ Entity \ User,它实现UserInterface,\ Serializable。
我查看了dev.log,发现了这条有趣的线:
[2016-09-22 14:16:19] security.INFO:身份验证请求失败。 {“exception”:“[object](Symfony \ Component \ Security \ Core \ Exception \ AuthenticationServiceException(code:0):执行'SELECT t1.id AS id_2,t1.username AS username_3,t1.password AS时发生异常password_4,t1.roles AS roles_5,t1.email AS email_6,t1.config AS config_7,t1.name AS name_8,t1.avatar AS avatar_9,t1.graph_color AS graph_color_10 FROM user t1 WHERE t0.username =?LIMIT 1'with params [\“fdsfgsd \”]
我可能在某个地方犯了一个错误,Doctrine正在寻找一个t0.username而没有定义t0别名。那是为什么?
以下是我的几个文件,希望它会有所帮助 /src/Pulsahr/UserBundle/Resources/config/doctrine/User.orm.yml:
ScoreboardBundle\Entity\User:
type: entity
table: user
repositoryClass: ScoreboardBundle\Repository\UserRepository
fields:
email:
type: string
length: 255
config:
type: integer
name:
type: string
length: 127
avatar:
type: string
length: 255
nullable: true
graphColor:
column: graph_color
type: string
length: 255
manyToMany:
races:
targetEntity: Race
mappedBy: users
oneToMany:
scores:
targetEntity: Score
mappedBy: user
lifecycleCallbacks: { }
/src/ScoreboardBundle/Resources/config/doctrine/User.orm.yml:
security:
encoders:
ScoreboardBundle\User:
algorithm: bcrypt
cost: 4
role_hierarchy:
ROLE_RACEADMIN: ROLE_USER
ROLE_ADMIN: ROLE_RACEADMIN
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
pulsahr_userbundle:
entity:
class: ScoreboardBundle:User
property: username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
pulsahr_user_security:
anonymous: true
form_login:
login_path: pulsahr_user_login
check_path: pulsahr_user_check
provider: pulsahr_userbundle
logout:
path: pulsahr_user_logout
target: pulsahr_user_login
pattern: ^/
remember_me:
secret: '%secret%'
access_control:
- { path: ^/admin, role: ROLE_ADMIN }
/app/config/security.yml:
{{1}}
我必须手动输入用户,并使用bcrypt calculator作为密码,使用4作为成本,与security.yml中定义的相同。但无论使用何种登录名和密码,我都会收到相同的错误消息。
答案 0 :(得分:1)
经过多次挣扎,一位朋友帮我找到了解决方案
问题是由Pulsahr \ UserBundle \ Entity \ User上的ScoreboardBundle \ User \ Entity \ User继承引起的。
php类很好,问题来自映射。我必须在User.orm.yaml中指定原始类是一个类型" mappedSuperclass"。只做这个:
Pulsahr\UserBundle\Entity\User:
type: mappedSuperclass
table: user
[...]
有关Doctrine文档的更多信息:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html
我希望这能帮助一些像我一样的人。