Zai*_*dar 3 authentication mongodb symfony
我目前正在开发一个项目,我使用mongodb作为数据库,我开始在symfony config.yml的mongo配置中没有安全性.
这是我的config.yml自项目开始以来的样子.
doctrine_mongodb:
connections:
default:
server: mongodb://localhost:27017
options: {}
default_database: louisv
document_managers:
default:
auto_mapping: true
Run Code Online (Sandbox Code Playgroud)
通过这些参数,该项目非常有效.
但我想为mongodb数据库添加安全性.所以我尝试按照mongodb上的文档来创建用户.我为admin数据库创建了一个"admin"用户,为louisv数据库创建了一个"louisv"用户(admin数据库是默认存在的数据库,louisv是我的).
现在我想让Symfony使用这个新用户.我从conf.yml文件中更改了选项参数,现在这就是我所拥有的:
doctrine_mongodb:
connections:
default:
server: mongodb://localhost:27017
options:
username: louisv
password: password
default_database: louisv
document_managers:
default:
auto_mapping: true
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试在Symfony中输入我的应用程序时
无法连接到:localhost:27017:使用用户名'louisv'在数据库'admin'上进行身份验证失败:auth失败
这是奇怪的,因为我的default_database是"louisv"而不是'admin'.
如果我将凭据更改为admin的凭据,我还有另一个错误:
localhost:27017:未授权在louisv.User上查询
这似乎很好,因为它似乎搜索用户,但我不能做查询.
代替:
server: mongodb://localhost:27017
Run Code Online (Sandbox Code Playgroud)
以下应该做的伎俩:
server: mongodb://localhost:27017/louisv
Run Code Online (Sandbox Code Playgroud)
显然,Doctrine ODM捆绑包现在也有一个"db"选项,因此您现在有以下选项:
connections:
default:
server: mongodb://louisv:password@localhost:27017/louisv
Run Code Online (Sandbox Code Playgroud)
要么
connections:
default:
server: mongodb://localhost:27017
options:
username: louisv
password: password
db: louisv
Run Code Online (Sandbox Code Playgroud)
第一个选项是首选,因为它允许在连接断开时自动重新验证.
也可以看看:
| 归档时间: |
|
| 查看次数: |
4804 次 |
| 最近记录: |