问题标签 [symfony-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
506 浏览

symfony - 不能从 symfony 安全选民内部抛出异常

我正在使用自定义 symfony 选民并使用一致的策略。访问决策管理器循环投票者和 isGranted 返回布尔值。

我们不能从 Voter 内部抛出异常来了解访问被拒绝的原因。我想知道哪些选民拒绝访问以及为什么拒绝访问,以便我可以向用户显示适当的消息以采取行动,例如升级到特定订阅。最好的方法是什么?

0 投票
0 回答
976 浏览

php - 在 Symfony2 中使用来自不同捆绑包的多个选民

我最初在我的一个捆绑包中创建了一个选民,并且毫无问题地使用它。但是,我在另一个包中创建了另一个,因为它使用不同的类,并且决定是否让用户通过的方式也不同。

问题是,尽管我遵循与第一个选民完全相同的步骤,但没有检测到第二个选民。

我究竟做错了什么?是否可以只创建和使用一个选民?

所以这是第一个正常工作的,我完全按照文档说的那样做。

将其注册为服务

创造它。简要说明它的作用:检查当前用户在 mySupportMessageBundle中的角色,这是一个用于管理支持票证的捆绑包。我还有一个常量来检查 Ticket 是否由用户启动。

至于第二个,

我也将它注册为服务,在另一个捆绑包中services.yml

而这次我没有检查任何东西,我只是 return ,但每次true调用它都会返回我,所以显然有问题。false

我尝试调用它的方式是:

$id是一个Feature对象,它来自MedAppBundle包含Feature实体的控制器。

然而,第一个投票者工作正常,所以我在这个声明中一定做错了什么,否则不可能有多个。

debug:container 没有列出它们,甚至没有列出工作的。捆绑包被加载到内核中,因为我一直在使用控制器和其他东西,只是服务似乎不起作用。所有包都$loader->load('services.yml');在 BundlenameExtension.php 文件中的 DependencyInjection 目录中

0 投票
1 回答
168 浏览

symfony - 如何在 Symfony 2 中接受任何用户名和密码?

我的 Symfony 2.6 应用程序有以下配置选项:

如您所见,我有 2 个用户可以访问几乎任何路线。

我想要的是扩展此权限并允许访问提供一些非空值作为用户名/密码的任何人。

例如,user1/pass1仍然可以工作,但someone/mypasswordanyone/blabla等等。基本上是用户名和密码的无限组合,只要提供一些值。


如何更改上述配置以执行我想要的操作?

我浏览了几乎所有 Symfony 的安全文档,并在其中玩了很多东西,但都没有奏效。我没有尝试过的一个解决方案是编写我自己的身份验证提供程序,但它看起来非常复杂且难以正确执行,如果有一种更简单的解决方案(我在 -此时此刻)。

0 投票
1 回答
2783 浏览

symfony - 通过使用 Symfony2 的 API 使用用户密码进行身份验证

我有一个 OAuth API,它需要用户名和密码才能获取用户对象(资源所有者密码凭证流)。我试图得到这个最终结果:

  1. 用户输入用户名/密码
  2. Symfony 交换用户名/密码以获取访问和刷新令牌,然后获取用户对象并使用获取的对象填充令牌
  3. 用户现在在网站上通过身份验证

我遇到的问题是,我似乎无法弄清楚如何以我能看到的最佳方式做到这一点:使用用户提供程序。UserProviderInterface 要求实现 loadUserByUsername(),但是我不能这样做,因为我需要用户名和密码来获取用户对象。

我试图实现 SimplePreAuthenticatorInterface,但我仍然遇到同样的问题:在创建 PreAuthenticated 令牌后createToken(),我需要使用它进行身份验证authenticateToken(),我仍然无法通过 UserProvider 获取用户,因为我首先必须使用用户名/密码来获取允许我获取用户对象的访问令牌。我考虑过在我的 UserProvider 中添加一种登录方法,该方法使用用户名/密码通过 API 登录,并将任何用户名的登录令牌存储在数组中,然后通过该数组中的用户名获取令牌,但这并不感觉不对。

我是从错误的角度看它吗?我不应该使用 PreAuthenticated 令牌吗?

0 投票
1 回答
721 浏览

symfony - 如何使用 symfony 2 中的访问控制只允许访问本地子网?

假设我有 /localnetwork,我只想授予对通常在 10.4.XX 范围内具有 ips 的本地网络的访问权限

所以问题是:如何在 symfony 中完成。我应该添加什么而不是 10.4.XX ?

0 投票
0 回答
123 浏览

php - Symfony2 注销并记住我

我已经成功地让 Symfony 身份验证与记住我一起工作。但是在注销时,记住 cookie 似乎会阻止用户实际注销。

我的 security.yml 配置

我找到Symfony\Component\Security\Http\Logout\CookieClearingLogoutHandler了,但似乎logout从未调用过此方法。

是否需要一些额外的配置?

0 投票
1 回答
52 浏览

security - 并发防火墙

背景:我目前正在一个站点上工作,其中某些功能仅对经过身份验证的成员可用。所以我有以下防火墙配置:

/app/config/security.yml:

我还有一个可通过 URL“/administration”访问的管理区域,其配置如下:

/app/config/security.yml:

问题:我想在站点的全局模板中(在防火墙“member_area”后面)显示一个链接,以便在访问者通过防火墙“administration_area”进行身份验证时返回到管理。事实上,我尝试做一些更复杂的事情,但我将问题简化为更清晰。

/src/VE/ProjectBundle/Resources/views/globalTemplate.html.twig:

除了防火墙的模式是“/administration”,或者防火墙“administration_area”对于 URL“/home” 来说是不活动的。此外,如果定义了“app.user”,它将包含一个对象“Member”,而不是一个对象“Administrator”。

将防火墙“administration_area”的模式更改为“^/”并不能解决任何问题,因为之前执行了防火墙“member_area”。

更改配置中防火墙的顺序会提出相反的问题。如果定义了“app.user”,它将包含一个对象“Administrator”而不是一个对象“Member”。

在两个防火墙之间共享相同的上下文似乎也不是一个解决方案,因为我们没有一个对象“用户”。我绝对希望有两个独立的实体(成员和管理员)。

该解决方案似乎是 Symfony 的演变,以允许以相同模式配置并发防火墙。在这里查看我的帖子:https ://github.com/symfony/symfony/issues/16378

你有什么想法可以解决我的问题吗?

谢谢!

0 投票
1 回答
46 浏览

json - 在 Symfony2 中将格式化的 ACL 信息嵌入 JSON

我在我的项目中使用 Symfony2 及其 ACL 安全组件。我想在前端框架中使用 ACL 信息来显示/隐藏元素。

将当前用户的格式化 ACL 信息附加到当前对象上是否是一个糟糕的想法?

假设用户有权查看和编辑对象,因此 JSON 数据如下所示:

此解决方案可能会导致哪些安全漏洞?

0 投票
1 回答
671 浏览

php - 保护 symfony 3 中的登录系统

我在 symfony 3 中的系统登录有问题。所以我security.yml的是:

路由:

以及来自 LoginController 的方法 login :

问题是,如果我使用凭据登录应用程序:admin/admin。之后我进行注销。

  1. 如果我尝试访问test.dev/admin/homepage----> 我正在重定向 vers 登录页面test.dev/admin/login,所以很好,我登录为admin.

  2. 如果我尝试访问test.dev/admin/news/all-----> 我可以在不登录的情况下访问此页面,并且我登录为anonymous

/admin/*因此,如果用户未经过身份验证,我想重定向到所有路由的登录页面。谢谢,对不起我的英语

0 投票
1 回答
3076 浏览

php - Symfony3 使用 UserLoaderInterface 扩展 UserRepository 并使用加密,登录不起作用

我无法登录我的受限区域。我正在关注 symfony.com 上的教程。

我将提供我的 security.yml 文件。

接下来是我的用户类

最后是用户存储库类

我的管理员路线如下所示:

我试图按照这里的说明进行操作http://symfony.com/doc/current/cookbook/security/entity_provider.html#using-a-custom-query-to-load-the-user这样我就可以使用用户名或电子邮件。但是,当我转到 /admin 时,无论我如何在 http_basic 提示中键入电子邮件或用户名,我似乎都无法进入。

我猜它可能与编码有关?所以在 security.yml 文件中我把两种编码器类型都放了,但它不能只使用 1 或其他。

请记住 /admin 具有安全角色 user 或 admin,因此由于我默认返回 ROLE_USER 类中的角色,它应该仍然能够进入。

如果某处有错误日志,我不知道如何找到它。由于我还是 Symphony 的新手,因此我们将不胜感激。

编辑:

忘记在数据库中提及,我目前有以下内容:

列是 ID、用户名、密码、电子邮件、is_active

我手动使用的加密:bin/console security:encode-password然后放入数据库字段。这以前适用于我所做的其他一些登录测试,但以防万一这是把它放在这里的问题。我也尝试将纯文本也放入数据库中,然后将其输入以登录,但也没有用。

谢谢!