我尝试启用FOSUserBundle以及FOSFacebookBundle.
任何网址都有例外.
有什么想法吗?
ServiceNotFoundException:服务"security.authentication.manager"依赖于不存在的服务"security.user.provider.concrete.fos_userbundle"
config.yml
fos_user:
db_driver: mongodb
firewall_name: main
user_class: Acme\AcmeBundle\Document\User
fos_twitter:
file: %kernel.root_dir%/../vendor/twitteroauth/twitteroauth/twitteroauth.php
consumer_key: ''
consumer_secret: ''
callback_url: ''
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: ''
secret: ''
cookie: true
permissions: [email, user_birthday, user_location]
services:
my.facebook.user:
class: Acme\AcmeBundle\Security\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
validator: "@validator"
container: "@service_container"
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/TwitterBundle/Resources/config/security_factories.xml"
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
providers:
my_fos_facebook_provider:
id: my.facebook.user
firewalls:
public:
pattern: ^/.*
form_login:
login_path: /login
provider: fos_userbundle
fos_facebook:
app_url: ""
server_url: ""
login_path: /login
check_path: /login_check/facebook
provider: my_fos_facebook_provider
anonymous: …Run Code Online (Sandbox Code Playgroud) 我需要有一个单独的URL用于普通登录表单(用户名/密码),它已经存在于/ login上,还有一些URL如/ login-via-facebook通过FOSFacebookBundle oauth程序登录.
现在我无法理解如何通过url触发oauth-facebook程序,它只有在我尝试访问"access_control"中列出的url时才有效.
提前致谢!
@Matt,非常感谢您的解释!我试着按照你的回答,但仍然有问题,我没有提到我已经使用了FOSUserBundle,
我的security.yml:
providers:
chain_provider:
providers: [fos_userbundle, fos_facebook]
fos_userbundle:
id: fos_user.user_manager
fos_facebook:
id: fos_facebook.auth
firewalls:
public:
pattern: ^/
fos_facebook:
app_url: ""
server_url: ""
login_path: /login
check_path: /login_check/facebook
provider: fos_userbundle
fos_userbundle:
login_path: /login
check_path: /login_check/form
provider: fos_userbundle
anonymous: true
logout: true`
Run Code Online (Sandbox Code Playgroud)
所以,在这一点上它抛出一个异常:InvalidConfigurationException: Unrecognized options "fos_userbundle" under "security.firewalls.public",如果我在公共防火墙中将fos_userbundle更改为form_login(但我应该这样做吗?),它会引发异常You must configure the check path to be handled by the firewall using form_login in your security firewall configuration.
我正进入(状态
< HTTP/1.1 400 Bad Request
< Content-Type: text/plain; charset=UTF-8
< Content-Length: 96
Illegal request-target: Invalid input '\', expected pchar, '/', '?' or 'EOI' (line 1, column 17)
Run Code Online (Sandbox Code Playgroud)
对于包含 的 URL \,这没关系,我希望有 400 个,但我想更改消息,因此它对用户更友好。
似乎它发生在它进入任何控制器之前。
ps 我知道有akka.http.parsing.uri-parsing-mode = relaxed,但我不想这样做(我想要的是不同的信息:)。
更新:导致示例 URLIllegal request-target是:
http://host.host/hello\world
http://host.host/hello{all
http://host.host/hello"all
Run Code Online (Sandbox Code Playgroud)
等等
基本上我在考虑浮点数或字符串.
字符串:
"10.00"
"10.05"
"10.50"
"1,000"
Run Code Online (Sandbox Code Playgroud)
浮点数
10
10.05
10.5
1000
Run Code Online (Sandbox Code Playgroud)
我喜欢字符串的格式化,浮点数限制精度可能存在问题.
你会选择什么?为什么?
symfony ×2
akka-http ×1
currency ×1
formatting ×1
javascript ×1
json ×1
php ×1
scala ×1
types ×1