如何构建一个JSON认证端点

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.0,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何构建一个JSON认证端点

在这个条目,您将构建一个JSON端点用户登录。当用户登录时,您可以加载用户从任何地方——比如数据库。看到安全获取详细信息。

首先,启用防火墙下的JSON登录:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9
#配置/包/ security.yaml安全:#……防火墙:主要:匿名:懒惰的json_login:check_path:/登录

提示

check_path也可以是路线名称(但不能有强制性的通配符,如。/登录/ {foo}在哪里喷火没有默认值)。

下一步是配置应用程序匹配这条道路的路线:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ / src /控制器/ SecurityController.php/ /……使用欧宝娱乐app下载地址\\FrameworkBundle\控制器\AbstractController;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;使用欧宝娱乐app下载地址\组件\路由\注释\路线;SecurityController扩展AbstractController{/ * * *@Route(name = " /登录”“登录”,方法= {“POST”}) * /公共函数登录(请求美元请求){美元用户=美元- >getUser ();返回美元- >json ([“用户名”= >美元用户- >getUsername (),“角色”= >美元用户- >将getRoles ()));}}

现在,当你做一个帖子请求头内容类型:application / json,/登录URL与身体,下面的JSON文档安全系统拦截请求,并发起认证过程:

1 2 3 4
{“用户名”:“dunglas”,“密码”:“我的密码”}

欧宝娱乐app下载地址Symfony负责验证用户提交的用户名和密码或触发身份验证过程失败时的一个错误。如果身份验证成功,控制器前面定义将被执行。

如果JSON文档有不同的结构,你可以指定路径来访问用户名密码属性的使用username_pathpassword_path键(默认的分别用户名密码)。例如,如果JSON文档具有以下结构:

1 2 3 4 5 6 7 8
{“安全”:{“凭证”:{“登录”:“dunglas”,“密码”:“我的密码”}}}

安全配置应该是:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11
#配置/包/ security.yaml安全:#……防火墙:主要:匿名:懒惰的json_login:check_path:登录username_path:security.credentials.loginpassword_path:security.credentials.password
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。