【问题标题】:Symfony 2: Usage of LexikJWTAuthenticationBundleSymfony 2:LexikJWTAuthenticationBundle 的使用
【发布时间】:2015-04-29 06:57:37
【问题描述】:

我正在尝试使用捆绑包 LexikJWTAuthenthicationBundle 来创建安全 API,但我并没有真正设法使用此捆绑包。事实上,我按照他们的 GitHub 项目中的说明进行了配置,还创建了一个 ApiBundle,但我不明白如何使用 url /api/login 登录。

你能帮我或给我一个教程的链接吗?

谢谢

【问题讨论】:

  • 我需要帮助... :/

标签: api symfony security lexikjwtauthbundle


【解决方案1】:

首先,您需要阅读有关Json Web Token Authentication 的更多信息。

当你正确理解了你所知道的其他认证的原理和区别时,看看这个很好的例子:

slashfan/LexikJWTAuthenticationSandbox

它为 API 和 AngularJS 应用程序提供了一个工作配置,该应用程序通过验证用户来使用 API。

您应该仔细阅读自述文件,尝试示例并分析 javascript 代码。

这个过程真的很容易理解:

假设您在数据库中注册了一些用户,该用户将向您的登录路径发出请求。
该请求包含用户凭据(通常是用户名/密码),就像您可以在用户提交其登录表单时以基于表单的身份验证一样。

API 具有自动处理登录路由的防火墙。
(防火墙由配置部分的捆绑文档提供)

当防火墙拦截请求时,会触发一个事件并由 LexikJWT 处理身份验证。

如果凭据对应于有效用户,则会创建一个 JWToken 并将其添加到响应中。
否则,响应看起来像Bad Credentials,状态为401 Unauthorized

然后,您必须通过将Authorization: Bearer {token} 添加到下一个请求来使用令牌。对于与需要进行身份验证的资源(受您的安全配置保护)相对应的所有请求也是如此。

我希望它对您来说更清楚,您可以使用这个强大的捆绑包和身份验证协议。

【讨论】:

    【解决方案2】:

    @theflow 我认为你误解了一些东西:

    这是the document中提到的防火墙配置(config/packages/security.yaml

    security:
    # ...
    
    firewalls:
    
        login:
            pattern:  ^/api/login
            stateless: true
            anonymous: true
            json_login:
                check_path:               /api/login_check
    

    和路线(config/routes.yaml):

    api_login_check:
        path: /api/login_check
    

    注意

    pattern:  ^/api/login
    

    不是路由(用于登录),它只是查找将由该防火墙处理的匹配路由(例如:/api/login_check/api/login/status 是匹配路由)的关键。

    真正的登录路径由

    定义
    check_path: /api/login_check
    

    您可以在这里输入路径或只输入路线名称:

    pattern:  api_login_check
    

    所以,如果要使用路径/api/login登录,则必须更改路由定义(config/routes.yaml):

    api_login_check:
        path: /api/login
    

    和防火墙配置:

    security:
    # ...
    
    firewalls:
    
        login:
            pattern:  ^/api/login
            ...
            json_login:
                check_path:               /api/login (or api_login_check)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-03
      • 2019-01-27
      • 2018-07-27
      • 1970-01-01
      • 2020-11-30
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多