首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用第三个参数的自定义登录

使用第三个参数的自定义登录
EN

Stack Overflow用户
提问于 2012-03-11 11:55:01
回答 2查看 4.1K关注 0票数 9

我正在为Symfony2开发一个相对简单的登录系统。

我已经掌握了基础知识,并且工作得很好。

让这有点特别的是,我需要一种方法来提供第三个价值(生态系统价值)。我的数据库中的用户名本身并不是唯一的,而是具有生态系统价值的唯一对。

生态系统价值是由他们登录的表单提供的。

如何在执行登录时考虑到此生态系统价值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-12 03:19:05

请看一下How to load Security Users from the Database (the Entity Provider)上的食谱教程--特别是关于Authenticating Someone with a Custom Entity Provider的部分。

本部分介绍如何更改/创建UserProviderInterface以允许通过电子邮件地址或用户名登录。显然,这不是您想要的,但是修改代码以针对您的第三个登录参数进行查询/验证应该相对简单。

理想情况下,您可能希望创建自己的UserProvider,幸运的是,有一个食谱教程可以做到这一点:How to create a custom User Provider

更新:要处理第三个登录选项并将其传递给您的自定义提供程序(如上所创建),您还需要创建一个自定义身份验证提供程序。看看How to create a custom Authentication Provider上的另一篇食谱文章。本文是为处理身份验证的额外请求头参数而量身定做的,但是使用这个示例,您应该能够用请求头替换请求POST值。

使用食谱文章来了解Symfony2的身份验证是如何工作的,但是使用(并扩展) Symfony2的用户名/密码功能,并且只包含您的第三个参数。下面是一些值得关注的类:

票数 6
EN

Stack Overflow用户

发布于 2015-08-15 23:14:09

您可以创建自定义Password Authenticator (>= Symfony 2.6)并在其中设置属性:

  1. createToken():创建令牌(您可以使用getAttribute)并为其设置属性,从$request.
  2. authenticateToken():获取所需的数据。在这里,您可以使用这第三个变量($UsernamePasswordToken->getAttribute())。如果它影响了下面的loadUserByUsername阅读。

在authenticateToken()中有UserProvider和loadUserByUsername。我所做的是使用my user provider (它扩展了FOSUserBundle并覆盖了上述方法),并将一个包含用户名和其他所需数据的数组传递给它。不要忘记检查loadUserByUsername内部传递了什么(例如,如果它是一个字符串,则调用parent::loadUserByUsername)。

我确信loadUserByUsername的这个技巧很糟糕,但我不知道还能怎么做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9652290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档