Ton*_*nov 7 php doctrine symfony1
经过一整天的辛苦挣扎,没有运气的Symfony 2,我决定问你们一个解决方案.
这里的问题是:我想作使用学说http_basic认证,所以用户会被提示输入用户名/密码被保存在数据库中.
所以,我按照以下步骤操作:
1)使用交互式控制台生成器创建了一个名为User的新实体.
这是它的样子:
2)如文档中所述,我实现了UserInterface并添加了4个缺失的方法.现在实体看起来像这样:
3)我已经尽可能少地修改了security.yml以使其工作,它看起来像这样:
我清除了缓存并试图访问app_dev.php/admin,当然我整天都得到同样的错误:
用户"Symfony\Component\Security\Core\User\User"没有用户提供程序.
500内部服务器错误 - RuntimeException
谁能告诉我问题出在哪里?我已经尝试了这千种不同的方式,奇怪的是它工作了一会儿,但是当我尝试将sha1添加为编码器算法而不是明文,并清除缓存时,我又回到了同样的错误...从那时起我什么也没得到它.这就像是在symfony决定时有一个隐藏的缓存被删除:D
我认为错误也可能出现在实体的4种方法中,但我无法修复它们,因为没有关于它们应该做什么的文档.
我目前正在使用RC4.
在此先感谢,希望有人会帮助.
小智 9
我曾经遇到过这个问题.
这是因为我使用前一个提供程序(in_memory)中的用户进行了记录.必须恢复in_memory部分,注销然后放入新的提供者.
我猜:
用户的信息在会话中,因为我们从security.yml中取出它所以无法访问它
小智 5
有同样的问题。看来这可行。我只会在开发过程中使用它,稍后我会找到解决方案。!
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
chain_provider:
providers: [in_memory, user_db]
in_memory:
users:
cheese: { password: olo, roles: ROLE_ADMIN }
user_db:
entity: { class: Abc\BaseBundle\Entity\User, property: username }
encoders:
Symfony\Component\Security\Core\User\User: plaintext
Abc\BaseBundle\Entity\User: plaintext
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
panel:
pattern: ^/(panel|login_check)
anonymous: ~
form_login:
login_path: /login
check_path: /login_check
default_target_path: /panel/
logout:
path: /logout
target: /
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10168 次 |
| 最近记录: |