问题标签 [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 回答
172 浏览

php - symfony2 安全组件问题

我在我的 symfony 2.3 项目中创建了自定义用户提供程序。在函数 loadUserByUsername 中,我正在调用 webservice 来验证我的用户。现在我的问题是我想获取在登录表单中输入的密码。所以我通过以下代码将服务容器作为参数传递

在我的用户提供者类中,我得到了一个请求对象,以便我可以获取密码

通过这种方式,symfony 分析器/工具栏会显示消息“安全组件已禁用”。登录工作正常,但消息仍然让我有点担心。有没有其他方法可以在用户提供者中获取密码/在用户提供者中获取容器?

0 投票
1 回答
119 浏览

php - 为什么在 Symfony 的不安全区域中没有清除会话?

我已经实现了 Symfony 的安全组件,如下所示:

当我调用注销路由时,我只是使会话无效。

据我了解,安全上下文存储在会话中,注销我的用户就足够了。但他没有退出。

如果我更新我的防火墙,将注销路由放入安全区域,则$session->invalidate()工作正常并且用户已注销......

为什么它在不安全的区域不起作用?不安全区域并不意味着无会话区域,不是吗?

0 投票
1 回答
952 浏览

php - 对多个实体使用一个类 Voter

这是Voter 类中的函数supportsClass

http://symfony.com/doc/2.5/cookbook/security/voters_data_permission.html

我想知道是否可以为同一个捆绑包中的多个实体使用一个类投票器,或者我必须为每个实体创建一个投票器?

编辑 我找到了这个解决方案:

0 投票
1 回答
2412 浏览

symfony - 如何在 Symfony2 Security 中使用 FOSUserBundle 和 SonataAdminBundle 在所有防火墙上成功登录设置 default_target_path 后重定向

这是我的安全防火墙配置:

完整配置:security.yml

这些是按预期工作的用例:

  1. 当直接访问登录页面 /login 时,用户被正确地重定向到 default_target_path qis/。
  2. 当访问一个页面时,例如 /contract 用户被正确地重定向回这个请求的页面。

我想使用qis防火墙实现2中提到的相同行为。

但:

当通过 qis 路由访问时,例如http://localhost:8000/qis/contract/list,它不会重定向到相同的链接,而是再次重定向到 default_target_path qis/。

qis防火墙需要哪些设置?

0 投票
1 回答
150 浏览

php - 访问/admin,为什么任何登录系统的用户都可以访问?

我有几天试图完成这项工作,但作为最后的手段,我不能这样做,我希望任何人都可以在这里帮助我。关键是我的应用程序,因为每个应用程序都有一个frontend应该由系统中注册的任何用户访问,除了那些迄今为止具有该角色ROLE_ADMINbackend用户,否则应该只能访问具有该角色的用户ROLE_ADMIN和普通用户没有自己的角色或具有默认角色 ROLE_USER 都不应该能够登录。

我遇到的问题是,无论如何,如果我与任何没有管理员权限(缺少ROLE_ADMIN)的普通用户签名并访问app.php/admin他们可以毫无问题地输入的 URL,这是完全错误的。另一方面,如果我尝试frontend与任何用户一起登录,ROLE_ADMIN则可以毫无问题地做到这一点,这不应该发生。

这是我的配置security.yml

我究竟做错了什么?谁能给我任何建议?

我已经从上到下多次阅读文档,但不明白我做错了什么

0 投票
2 回答
67 浏览

php - 防止用户从非授权区域登录

为了避免在用户尝试访问禁止区域时出现 403 错误并避免用户登录该区域,如果没有正确的凭据,我需要阻止用户登录。

让我解释一下,假设我是X用户ROLE_USER,用户X可以访问前端但不能登录后端,就像我们有用户一样YROLE_ADMIN用户Y可以登录后端但不能登录前端,明白我吗?我怎么能做到这一点?

0 投票
1 回答
174 浏览

php - Symfony2 认证方式在同一个防火墙

我是 Symfony2 的新手。我阅读了文档并看到了一些登录表单的配置 http://symfony.com/doc/current/cookbook/security/form_login_setup.html

我不明白为什么在同一个防火墙中有 2 种安全方法 http_basic 和 form_login?安全系统将使用哪种方法?http_basic 或 form_login 或两者兼而有之?是多余的吗?上面的一些问题看起来很愚蠢,但 symfony2 安全组件文档似乎很差。

0 投票
0 回答
86 浏览

symfony - 允许网络蜘蛛访问 Symfony 中的受限页面

如何允许网络爬虫访问 Symfony 中的受限页面?

我认为 IP 列表应该允许它,但是如何对它们进行身份验证?

0 投票
1 回答
303 浏览

mongodb - 尽管我的用户在数据库中具有角色,但始终 403 在 symfony 2 中拒绝访问

我总是 403 拒绝访问,这是我的 security.yml

我想访问 {url}/app_dev.php/admin ,总是 403 !

我正在使用 mongodb 数据库,这是我在 mongo 中的文档:

如果我为当前用户进行测试,我会得到:

它总是返回 FALSE

请帮忙

0 投票
1 回答
1335 浏览

angularjs - Symfony2:允许匿名访问所有不匹配的路由

我将 Symfony2 应用程序分成 2 个包:BackendBundle用于 API 和FrontendBundle用于 AngularJS“客户端”。一切都在防火墙下工作。

BackendBundle有实体,处理 API 路由;FrontendBundle具有 Angular 视图、路由等,并且只有一个带有通配符的控制器:

FrontendBundle路由被定义为 中的最后一个资源app/config/routing.yml,仅在任何其他路由不匹配时才被调用。多亏了这一点,如果直接访问它们(例如复制粘贴),它可以处理 Angular HTML5 模式的路由——而且它工作正常。

我想要做AngularController::angularIndexAction()的是定义防火墙和/或访问控制,以使匿名用户可以访问所有那些不匹配的路由(由 处理)。

为什么?我想打开一些 API 路由(通过前端代理)以供非用户访问(例如通过电子邮件发送的确认 URL,向用户发送一些消息)。

我不想为每个匿名“Angular”路由硬编码访问控制列表,我只想对 API 路由执行此操作。最后,那些不匹配的路由应该打开 Angular 的索引,它应该知道用户是否登录(用于显示完整或简化的布局)并且应该处理 Angular 路由并在请求失败时显示某种“访问被拒绝”消息(有 Symfony 监听器和 Angular 的$provide拦截器)。

有什么建议么?


编辑@Security注释AngularController::angularIndexAction()不起作用,它仍然重定向到防火墙入口点。


Edit2:这是片段security.yml

我知道{ path: '^/', roles: ROLE_USER }如果用户未登录,这会将所有路由重定向到登录页面。我认为这很明显并且没有提到它。我想要的是强制ROLE_USER匹配路由并让那些不匹配IS_AUTHENTICATED_ANONYMOUSLY的路由,而无需明确定义每个前端“代理路由”。在我的例子中,没有 404 Symfony 页面,因为一切都进行了angular_index_all_unmatched_routes路由,并且 Angular 路由定义决定是否有需要处理的东西。