如何构建一个JSON认证端点

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何构建一个JSON认证端点

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

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

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

提示

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

下一步是在应用程序中配置与此路径匹配的路由:

  • 注释
  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/ / src /控制器/ SecurityController.php名称空间应用程序控制器/ /……使用ob娱乐下载FrameworkBundle控制器AbstractController使用ob娱乐下载组件HttpFoundation请求使用ob娱乐下载组件路由注释路线SecurityController扩展AbstractController/ * * *@Route("/login", name="login", methods={"POST"}) */公共函数登录(请求请求响应用户->getUser ();返回->json ([“用户名”= >用户->getUsername (),“角色”= >用户->将getRoles ()));}}

现在,当你做一个帖子请求,带有报头内容类型:application / json,到/登录URL,并以以下JSON文档为主体,安全系统拦截请求并启动身份验证过程:

1 2 3 4
“用户名”“dunglas”“密码”“我的密码”

ob娱乐下载Symfony负责使用提交的用户名和密码对用户进行身份验证,或者在身份验证过程失败时触发一个错误。如果身份验证成功,则调用前面定义的控制器。

如果JSON文档具有不同的结构,则可以指定访问的路径用户名而且密码属性,使用username_path而且password_path键(它们默认分别为用户名而且密码).例如,如果JSON文档具有以下结构:

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

安全配置应该是:

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
#配置/包/ security.yaml安全:#……防火墙:主要:匿名:真正的懒惰:真正的json_login:check_path:登录username_path:security.credentials.loginpassword_path:security.credentials.password
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。