不需要 UserProvider 的自定义身份验证

2024-05-04

我在网上寻找适合我的配置的解决方案,但找不到满足我需求的东西。 到目前为止,我已经为此工作了整整三天,但我无法使其正常工作,我确信有几件事我不明白。

我正在分支 2.1 上开发我的 symfony 应用程序。

为了让这个简短。我有一个网络服务,我想用它来进行身份验证。

这是我想要实现的流程:

  1. 用户提交凭据
  2. 这些凭据(需要用户名和密码)被发送到我的网络服务
  3. 如果用户名/密码正确,Web 服务会给出一个数组,其中包含用户名、角色以及密码以外的其他一些内容。 (如果凭据不正确,将返回一个包含一个字段的数组)
  4. 一旦网络服务提供“大”数组,我希望用户被视为已通过身份验证。
  5. 在返回的角色函数中,我希望 Symfony 安全组件向用户提供相应的授权。
  6. 我想避免为每个浏览的页面调用网络服务。

我不知道是否可以使用 Symfony 来实现此目的,当然这个工作流程似乎不是更安全,但我看不到使用此 Web 服务的另一种方法。

最后,我不需要 UserProvider,因为我的身份验证是在远程服务上进行的。但显然,Symfony 组件需要一个用户提供者(与其类型无关)。

我提前谢谢你

编辑:为了更简单,是否可以在 UserProvider 类(实现 UserProviderInterface)的 loadUserByUsername() 函数中传递变量 $username 以外的内容?除了用户名之外,我还需要用户通过才能检索用户对象。


AuthenticationProvider 通常会调用 UserProvider.loadUserByUsername。就您而言,无需调用它。您的身份验证方法可以负责创建用户并传回令牌。

经过身份验证的令牌最终会出现在会话中。

问题是,默认情况下,当下一个请求到来时,系统将从会话中检索令牌/用户,然后调用 UserProvider.refreshUser($user) ,默认情况下,它再次使用 loadUserByUsername 重新加载用户。

因此,您需要创建自己的用户提供程序,并且让refreshUser 返回相同的用户。您将需要一个 loadUserByUsername 来满足该接口,但永远不应该调用它。

如果您确实想从 Web 服务定期刷新用户,那么您需要添加自己的侦听器以从会话加载令牌并覆盖默认行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不需要 UserProvider 的自定义身份验证 的相关文章

  • HTTPS URL 的基本代理身份验证返回 HTTP/1.0 407 需要代理身份验证

    我想在 Java 中使用具有基本身份验证 用户名 密码 的代理来进行连接 并且仅此连接 以下代码适用于 HTTP URL 例如 http www google com http www google com URL url new URL
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • 如何使用 next auth 通过自定义 Spring API 库和端点进行身份验证

    我是 Next js 的新手 正在将我的前端从 React 迁移到 Next v4 我已经使用 Spring 开发了一个后端 它连接到 Azure 上托管的 MySQL 数据库 该 API 在 Postman 和 React 前端上经过全面
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • 访问被拒绝(“java.io.FilePermission”“执行”)

    我是初学者 这是我写的第一个小程序 我想用小程序运行 exe 应用程序 java代码 package appletexample import java io import java awt import java applet Apple
  • Rails 安全:完全避免大规模分配

    我倾向于不需要批量分配 http guides rubyonrails org security html mass assignment我的生产代码中的功能 在我的测试代码中 我经常使用它 但在这些情况下我do想要设置任意列 因此 如果在
  • Symfony2 自定义密码编码器(bcrypt)

    我已经编写了自己的密码编码器 它实现了PasswordEncoderInterface class BCryptPasswordEncoder implements PasswordEncoderInterface protected en
  • Ionic/Cordova 应用程序中的身份验证

    首先 我不是专业人士 在我成为一名更好的开发人员的过程中 我试图了解需要什么以及如何完成为 Ionic Framework 应用程序创建注册 登录 大多数单页应用程序 SPA 在节点服务器上处理身份验证 该服务器还为客户端提供 HTML 就
  • 具有数据库连接依赖性的自定义约束验证器 Symfony2

    我正在向 Symfony2 项目添加自定义验证查询 The docs http symfony com doc current cookbook validation custom constraint html缺乏完整的示例 并且我不确定
  • 使用socket.io进行用户身份验证

    我已经红色了这个教程 http howtonode org socket io auth http howtonode org socket io auth 它展示了如何使用express和socket io对用户进行身份验证 但是有没有一
  • 这个巨大的正则表达式是如何工作的?

    我最近在我的一个目录中的一个名为的文件中找到了下面的代码doc php 文件功能或链接到文件管理器 做得非常好 基本上 它列出了当前目录中的所有文件 并且允许您更改目录 它可以访问我的所有文件 添加 重命名 信息 删除 我不记得安装过它 我
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Node.js 和 Passport 对象没有 validPassword 方法

    我正在使用 Node js Express Passport 创建一个简单的身份验证 本地 到目前为止我所达到的效果是 当输入错误的用户名或密码时 用户将被重定向到错误页面 但是当用户输入正确的用户名和密码时 我收到此错误 node mod
  • 如何使用 .NET 以编程方式沙箱进程

    我计划设计一个系统 本质上允许用户在我的机器上运行 PHP Ruby 等脚本代码 我想将它们放入沙箱中 以防止它们访问机器的关键方面 哪些 NET API 可用于此目的 我计划从主流程创建一个子流程 并希望以编程方式从主流程中沙箱该子流程
  • Symfony Serialize 学说实体

    我有一个简单的实体类
  • Laravel 白名单域认证

    我正在寻找只允许某些域访问我的 laravel 应用程序的最佳方法 我目前正在使用 Laravel 5 1 并且如果引用域不在白名单域中 则使用中间件进行重定向 class Whitelist Handle an incoming requ
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • 如何在 firebase.auth 中更新用户电话号码(js,ts)

    我如何更新在 firebase auth 中用于身份验证的用户电话号码 Firebase 给出方法 updatePhoneNumber phoneCredential 但我们需要给予电话凭证 此凭证采用对象 interface AuthCr

随机推荐