2011-07-05 37 views
7

Sau khi đấu tranh cả ngày với một tenn đơn giản cho Symfony 2 mà không có may mắn, tôi quyết định hỏi các bạn giải pháp.Không có người dùng nào cung cấp cho người dùng "Symfony Component Security Core User User"

Đây là vấn đề: Tôi muốn thực hiện xác thực http_basic bằng cách sử dụng học thuyết, vì vậy người dùng sẽ được nhắc nhập tên người dùng/mật khẩu được lưu giữ trong cơ sở dữ liệu.

Vì vậy, tôi đã làm theo các bước sau:

1) Đã tạo một thực thể mới có tên Người dùng với trình tạo bảng điều khiển tương tác.

Đây là cách nó trông giống như:

http://pastebin.com/3RzrwFzL

2) Như đã trình bày trong tài liệu tôi đã thực hiện diện người dùng và bổ sung 4 phương pháp thiếu. Bây giờ thực thể trông như thế này:

http://pastebin.com/Epw3YrwR

3) Tôi đã sửa đổi security.yml càng ít càng tốt để làm cho nó hoạt động, và nó trông như thế này:

http://pastebin.com/tp6Gd7t7

tôi xóa bộ nhớ cache và cố gắng truy cập vào app_dev.php/quản trị và tất nhiên tôi gặp lỗi tương tự cả ngày:

Không có người dùng nào cho người dùng "Symfony \ Thành phần \ Security \ Core \ User \ User ".

500 Internal Server Error - RuntimeException

bất cứ ai có thể cho tôi biết đâu là vấn đề? Tôi đã thử hàng ngàn cách khác nhau và làm việc này một cách kỳ lạ, nhưng khi tôi cố gắng thêm sha1 làm thuật toán mã hóa thay vì chữ thô, và xóa bộ nhớ cache, tôi quay trở lại cùng một lỗi .. kể từ đó tôi không nhận được gì khác Nhưng nó. Nó giống như nếu có một bộ nhớ cache ẩn bị xóa khi symfony quyết định: D

Tôi nghĩ rằng lỗi cũng có thể thuộc 4 phương pháp của thực thể, nhưng tôi không thể khắc phục được vì không có tài liệu về họ làm.

Tôi hiện đang sử dụng RC4.

Xin cảm ơn trước, hy vọng ai đó sẽ trợ giúp.

Trả lời

4

Đã xảy ra sự cố tương tự. Dường như nó hoạt động. Tôi sẽ chỉ sử dụng nó trong quá trình phát triển sau này tôi sẽ tìm ra một giải pháp.

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:/
0

Bạn có thể tự giải quyết nỗi đau đầu và thử bạn bè của symfony UserBundle.

Ít nhất, việc xem xét gói đó sẽ giúp bạn tìm hiểu và sửa mã của riêng bạn. Nó có rất nhiều mã/ví dụ.

+0

Để công bằng công việc tuyệt vời đã làm với FOSUserBundle nhưng nó có thể gây ra bạn đau đầu khác nếu bạn thích một giải pháp mỏng hoặc tùy biến cao. – David

8

Tôi gặp sự cố này một lần.

Đó là vì tôi đã đăng nhập với người dùng từ nhà cung cấp trước đó (in_memory).Đã phải khôi phục phần in_memory, đăng xuất và sau đó đặt nhà cung cấp mới.

tôi đoán:

Thông báo thông tin của người sử dụng là trong phiên giao dịch và nó không thể acces nó kể từ khi chúng tôi lấy nó ra khỏi security.yml

+1

Rất tốt, luôn luôn làm sạch bộ nhớ cache. –

+0

+1 Làm sạch bộ nhớ cache sửa lỗi này – Jonathan

+0

Còn nếu bộ nhớ cache sạch và lỗi vẫn còn? Tôi đang chạy cùng một vấn đề sau khi cố gắng để có được [this] (https://knpuniversity.com/screencast/guard/api-token) làm việc, lời khuyên nào? Tôi bị kẹt – ReynierPM

0

cho tôi vấn đề xảy ra trong môi trường dev. Nó xảy ra vì tôi có phiên hoạt động từ dự án khác.

Giúp cookie trình duyệt được trợ giúp.

+0

Có, để xóa cookie của trình duyệt cũng đã giúp tôi! Thks – mario

Các vấn đề liên quan