问题标签 [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.
symfony - 不能从 symfony 安全选民内部抛出异常
我正在使用自定义 symfony 选民并使用一致的策略。访问决策管理器循环投票者和 isGranted 返回布尔值。
我们不能从 Voter 内部抛出异常来了解访问被拒绝的原因。我想知道哪些选民拒绝访问以及为什么拒绝访问,以便我可以向用户显示适当的消息以采取行动,例如升级到特定订阅。最好的方法是什么?
php - 在 Symfony2 中使用来自不同捆绑包的多个选民
我最初在我的一个捆绑包中创建了一个选民,并且毫无问题地使用它。但是,我在另一个包中创建了另一个,因为它使用不同的类,并且决定是否让用户通过的方式也不同。
问题是,尽管我遵循与第一个选民完全相同的步骤,但没有检测到第二个选民。
我究竟做错了什么?是否可以只创建和使用一个选民?
所以这是第一个正常工作的,我完全按照文档说的那样做。
将其注册为服务
创造它。简要说明它的作用:检查当前用户在 mySupportMessageBundle
中的角色,这是一个用于管理支持票证的捆绑包。我还有一个常量来检查 Ticket 是否由用户启动。
至于第二个,
我也将它注册为服务,在另一个捆绑包中services.yml
:
而这次我没有检查任何东西,我只是 return ,但每次true
调用它都会返回我,所以显然有问题。false
我尝试调用它的方式是:
$id
是一个Feature
对象,它来自MedAppBundle
包含Feature
实体的控制器。
然而,第一个投票者工作正常,所以我在这个声明中一定做错了什么,否则不可能有多个。
debug:container 没有列出它们,甚至没有列出工作的。捆绑包被加载到内核中,因为我一直在使用控制器和其他东西,只是服务似乎不起作用。所有包都$loader->load('services.yml');
在 BundlenameExtension.php 文件中的 DependencyInjection 目录中
symfony - 如何在 Symfony 2 中接受任何用户名和密码?
我的 Symfony 2.6 应用程序有以下配置选项:
如您所见,我有 2 个用户可以访问几乎任何路线。
我想要的是扩展此权限并允许访问提供一些非空值作为用户名/密码的任何人。
例如,user1/pass1
仍然可以工作,但someone/mypassword
或anyone/blabla
等等。基本上是用户名和密码的无限组合,只要提供一些值。
如何更改上述配置以执行我想要的操作?
我浏览了几乎所有 Symfony 的安全文档,并在其中玩了很多东西,但都没有奏效。我没有尝试过的一个解决方案是编写我自己的身份验证提供程序,但它看起来非常复杂且难以正确执行,如果有一种更简单的解决方案(我在 -此时此刻)。
symfony - 通过使用 Symfony2 的 API 使用用户密码进行身份验证
我有一个 OAuth API,它需要用户名和密码才能获取用户对象(资源所有者密码凭证流)。我试图得到这个最终结果:
- 用户输入用户名/密码
- Symfony 交换用户名/密码以获取访问和刷新令牌,然后获取用户对象并使用获取的对象填充令牌
- 用户现在在网站上通过身份验证
我遇到的问题是,我似乎无法弄清楚如何以我能看到的最佳方式做到这一点:使用用户提供程序。UserProviderInterface 要求实现 loadUserByUsername(),但是我不能这样做,因为我需要用户名和密码来获取用户对象。
我试图实现 SimplePreAuthenticatorInterface,但我仍然遇到同样的问题:在创建 PreAuthenticated 令牌后createToken()
,我需要使用它进行身份验证authenticateToken()
,我仍然无法通过 UserProvider 获取用户,因为我首先必须使用用户名/密码来获取允许我获取用户对象的访问令牌。我考虑过在我的 UserProvider 中添加一种登录方法,该方法使用用户名/密码通过 API 登录,并将任何用户名的登录令牌存储在数组中,然后通过该数组中的用户名获取令牌,但这并不感觉不对。
我是从错误的角度看它吗?我不应该使用 PreAuthenticated 令牌吗?
symfony - 如何使用 symfony 2 中的访问控制只允许访问本地子网?
假设我有 /localnetwork,我只想授予对通常在 10.4.XX 范围内具有 ips 的本地网络的访问权限
所以问题是:如何在 symfony 中完成。我应该添加什么而不是 10.4.XX ?
php - Symfony2 注销并记住我
我已经成功地让 Symfony 身份验证与记住我一起工作。但是在注销时,记住 cookie 似乎会阻止用户实际注销。
我的 security.yml 配置
我找到Symfony\Component\Security\Http\Logout\CookieClearingLogoutHandler
了,但似乎logout
从未调用过此方法。
是否需要一些额外的配置?
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
你有什么想法可以解决我的问题吗?
谢谢!
json - 在 Symfony2 中将格式化的 ACL 信息嵌入 JSON
我在我的项目中使用 Symfony2 及其 ACL 安全组件。我想在前端框架中使用 ACL 信息来显示/隐藏元素。
将当前用户的格式化 ACL 信息附加到当前对象上是否是一个糟糕的想法?
假设用户有权查看和编辑对象,因此 JSON 数据如下所示:
此解决方案可能会导致哪些安全漏洞?
php - 保护 symfony 3 中的登录系统
我在 symfony 3 中的系统登录有问题。所以我security.yml
的是:
路由:
以及来自 LoginController 的方法 login :
问题是,如果我使用凭据登录应用程序:admin/admin。之后我进行注销。
如果我尝试访问
test.dev/admin/homepage
----> 我正在重定向 vers 登录页面test.dev/admin/login
,所以很好,我登录为admin
.如果我尝试访问
test.dev/admin/news/all
-----> 我可以在不登录的情况下访问此页面,并且我登录为anonymous
/admin/*
因此,如果用户未经过身份验证,我想重定向到所有路由的登录页面。谢谢,对不起我的英语
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
然后放入数据库字段。这以前适用于我所做的其他一些登录测试,但以防万一这是把它放在这里的问题。我也尝试将纯文本也放入数据库中,然后将其输入以登录,但也没有用。
谢谢!