我想調整FOSUserBundle與我的Neo4j數據庫一起工作,我似乎無法使它工作。經過很長時間的努力實現我自己的用戶系統沒有運氣(Setting up NEO4j in Symfony2),我開始嘗試使用FOSUserBundle。與Symfony2中的FOSUserBundle一起使用Neo4j
我用下面的文章和資料庫:
https://github.com/ikwattro/Neo4jUserBundle 我採取這種和複製所有文件到我UserBundle。我改變了命名空間。
我已經採取了圖表管理器從這裏:https://github.com/ikwattro/KwattroNeo4jOGMBundle
至於其他,我都跟着FOSUserBundle文檔。
現在,當我去註冊表單時,所有字段都會出現,我可以填寫我的首選憑證。這工作。我點擊提交後我重定向到成功頁面,其上顯示警報覆蓋:
An error occurred while loading the web debug toolbar (500: Internal Server Error).
Do you want to open the profiler?
如果我再進入探查,我可以看到,我已成功授權並登錄的用戶我剛剛創建的。數據也成功保存在我的neo4j數據庫中。
現在的問題是,如果我去我的Symfony項目的任何其他頁面,我再次登錄爲匿名。如果我進入登錄頁面,表單顯示正確,但它總是說:Invalid credentials.
我在猜測,他們在我的會話或我的安全性方面有問題嗎?
這是我security.yml:
安全: 編碼器: FOS \ UserBundle \型號\的UserInterface:bcrypt Neo4jUserBundle \實體\用戶:bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: neo4j.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: security.csrf.token_manager
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 }
我不知道這是否信息可以幫助或者是相關的,但是在註冊後的「請求」下的分析器中(當用戶仍然正確認證時),這是會話信息:
Session Metadata
Key Value
Created Tue, 21 Jul 15 17:27:34 +0200
Last used Tue, 21 Jul 15 17:27:34 +0200
Lifetime 0
Session Attributes
Key Value
_csrf/authenticate A_H4Ul1XHFYoxQdOirdmbBQRRCJ01Xh8EkGeC6Y7xw0
_csrf/registration OAXAXhfhcN6z0WekMN0fk8zg4ikk5uCCZBlvhy8DyVY
_security.last_username test
_security_main C:74:"Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken":444:{a:3:{i:0;N;i:1;s:4:"main";i:2;s:404:"a:4:{i:0;C:32:"neo4jProxyUserBundle_Entity_User":192:{a:9:{i:0;s:60:"$2y$13$e49oj61cdjk88kk040wg8exlwqVzbdQB5IVNG18Wqcbe.EW8KXi72";i:1;s:31:"e49oj61cdjk88kk040wg8kcc4cg40c4";i:2;s:4:"test";i:3;s:4:"test";i:4;b:0;i:5;b:0;i:6;b:0;i:7;b:1;i:8;i:66;}}i:1;b:1;i:2;a:1:{i:0;O:41:"Symfony\Component\Security\Core\Role\Role":1:{s:47:"Symfony\Component\Security\Core\Role\Rolerole";s:9:"ROLE_USER";}}i:3;a:0:{}}";}}
Flashes
Key Value
success [0 => registration.flash.user_created, 1 => registration.flash.user_created, 2 => registration.flash.user_created, 3 => registration.flash.user_created, 4 => registration.flash.user_created, 5 => registration.flash.user_created, 6 => registration.flash.user_created, 7 => registration.flash.user_created, 8 => registration.flash.user_created]
任何幫助或暗示將不勝感激。
UPDATE [2015年7月21日]
我現在已經創建了一個庫:https://github.com/JoranBeaufort/Neo4jUserBundle(我希望這個作品,我已經使用GitHub的第一次)
我的猜測是,他們是事關與會話處理?
要指出的另一件事是,依賴注入似乎並沒有做任何事情。我一定會錯過幾件重要的事情。
這裏是我的日誌文件中的相關部分: 由於刪除大小
這將是馬麗娟能夠提供Neo4jUserBundle其開箱與FOSUserBundle,可以在配置symfony項目的配置文件。偉大而重要的還將是對數據庫的認證(使用用戶名和密碼連接到neo4j)。
UPDATE [2015年7月22日]
我已經改變了軟件包名稱,我想我終於得到了DependencyInjection工作。我不太確定,但我認爲我對我的類命名有問題。
我也試過你用findUserById建議的。我寫了一個控制器,它採用路由myapp.com/neo4juser/debug/finduserbyid/{id},然後使用findUserById方法返回用戶。這是行得通的。我的Neo4j-Database中有一位用戶,ID = 68,email = [email protected]。如果我現在輸入myapp.com/neo4juser/debug/finduserbyid/68,則會加載該頁面,顯示該用戶的正確電子郵件。
這裏控制器:https://github.com/JoranBeaufort/Neo4jUserBundle/blob/master/Controller/DebugController.php
中的UserManager的方法似乎returnung所需的對象。
這是否有助於弄清爲什麼登錄無法以任何方式工作?序列化與錯誤或加密類型有關嗎?或者它可能與csrf有關?還有什麼提示?
UPDATE [2015年7月23日]
當使用in_memory作爲提供者和建立一個in_memory用戶,則登錄作品。所以現在我已經把問題縮小到提供者。
我越來越近!現在在dev.log文件中的錯誤讀取:
[2015-07-23 17:11:54] security.INFO: Authentication request failed. {"exception":"[object] (Symfony\\Component\\Security\\Core\\Exception\\BadCredentialsException(code: 0): Bad credentials. at bla/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/UserAuthenticationProvider.php:73, Symfony\\Component\\Security\\Core\\Exception\\UsernameNotFoundException(code: 0): Username \"test\" does not exist. at bla/src/Neo4jUserBundle/Security/UserProvider.php:42)"} []
重要的是,部分Username \"test\" does not exist
。我猜這意味着,自己是不是在用戶供應商合作。任何人都可以發現問題可能是什麼?我打電話的提供商可以在這裏找到:https://github.com/JoranBeaufort/Neo4jUserBundle/tree/master/Security
你有一個儲存庫,代碼可用,可能有這麼多的東西在這裏打球。你也可以發佈日誌文件的內容。 thx –
我現在已經添加了一個存儲庫和日誌文件的最新內容。親切的問候 – Joran
謝謝,並感謝在課堂上提及我的名字。真的很難這樣說。日誌也不是很有用。你是否檢查過UserManager中的方法是否返回任何內容,只需打印返回的findUserById或findUserByUsername,例如 –