标签: symfony-security

Symfony2 - 为什么选民甚至被称为SuperAdmins

我注意到即使是SuperAdmin用户也要求我的选民.

它是否按预期工作?

如果是的话,我认为SuperAdmin的理念是他们系统地拥有所有权利,因此我们不必逐个给予他们每个权限.在那种情况下,为什么不允许所有选民进入?

我总是要放

if ($user->isSuperAdmin()) {
    return VoterInterface::ACCESS_GRANTED;
}
Run Code Online (Sandbox Code Playgroud)

在我的选民?

security roles symfony symfony-security

3
推荐指数
1
解决办法
440
查看次数

无法更新实体

在Symfony 2(最新版本)下,我正在尝试更新我的实体:

php app/console doctrine:schema:upate --force
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息到我的终端:

[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
"security.firewalls.access_control"下无法识别的选项"0,1,2,3"

我是Symfony的新手,我不知道在哪里可以搜索来解决这个问题.

这是security.yml文件:

# To get started with security, check out the documentation:
Run Code Online (Sandbox Code Playgroud)

http://symfony.com/doc/current/book/security.html

安全性:编码器:FOS\UserBundle\Model\UserInterface:bcrypt

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN

# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    # disables authentication for assets and the profiler, adapt it according to your needs
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4

        logout:       true
        anonymous:    true
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    #main:
        #anonymous: ~
        # activate different ways …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle symfony-security

3
推荐指数
1
解决办法
1225
查看次数

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

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

security:
    firewalls:
      localnetwork:
        pattern:  ^/localnetwork
        anonymous: ~

access_control:
    - { path: ^/localnetwork, roles: IS_AUTHENTICATED_ANONYMOUSLY, ips : [ '10.4.X.X'] }
    - { path: ^/localnetwork, roles: ROLE_NO_ACCESS}
Run Code Online (Sandbox Code Playgroud)

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

symfony symfony-security

3
推荐指数
1
解决办法
573
查看次数

EasyAdmin 中的用户密码管理

我有 2 个问题/疑虑

  1. 当我编辑用户时,我并不总是需要更改用户的密码,我该如何更改?

  2. 如何在数据库中保存加密的密码,到目前为止,我只能以纯文本形式成功,而且我找到的所有说明都不是最新的和/或对我有帮助。

所有其他文件都是通过命令创建的,到目前为止没有变化。

我使用 Symfony 5.2.7 和 php 8.0.6

src/Controller/Admin/AdminCrudController.php

<?php

namespace App\Controller\Admin;

use App\Entity\Admin;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ArrayField;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;

class AdminCrudController extends AbstractCrudController
{
    public static function getEntityFqcn(): string
    {
        return Admin::class;
    }

    public function configureCrud(Crud $crud): Crud
    {
        return $crud
            ->setEntityPermission('ROLE_ADMIN')
        ;
    }

    public function configureFields(string $pageName): iterable
    {
        yield TextField::new('username');
        yield TextField::new('password')
            ->hideOnIndex()
            ->setFormType(PasswordType::class)
        ;
        yield ArrayField::new('roles');
    }
}
Run Code Online (Sandbox Code Playgroud)
src/Entity/Admin.php

<?php

namespace App\Entity;

use App\Repository\AdminRepository;
use Doctrine\ORM\Mapping …
Run Code Online (Sandbox Code Playgroud)

php symfony symfony-security

3
推荐指数
1
解决办法
3956
查看次数

将对象传递给自定义选民?

我一直在阅读有关在Symfony 2中创建自定义选民的信息.根据这个页面,可以将一个对象传递给securitycontext的isGranted方法,我在自己的控制器中完成了这个方法:

$page = new Page();

if ( ! $securityContext->isGranted('CONTENT_CREATE', $page)) {
    throw new AccessDeniedException('Fail');
}
Run Code Online (Sandbox Code Playgroud)

看起来像投票方法应该接受它,但是,当我在$ object参数上调用get_class而不是获取我的Page实体时,我得到:

Symfony的\分量\ HttpFoundation \请求

public function vote(TokenInterface $token, $object, array $attributes)
{   
    print_r(get_class($object)); die();
    return VoterInterface::ACCESS_ABSTAIN;
}
Run Code Online (Sandbox Code Playgroud)

我的选民被定义为我的services.yml文件中的服务:

content_security.access.my_voter:
        class:      My\Bundle\Security\Authorization\Voter\MyVoter
        arguments:  ["@service_container"]
        public:     false
        tags:
            - { name: security.voter }
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

任何建议表示赞赏

谢谢

symfony symfony-security

2
推荐指数
1
解决办法
1428
查看次数

使用Symfony2通过API对用户密码进行身份验证

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

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

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

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

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

authentication symfony symfony-security

2
推荐指数
1
解决办法
2414
查看次数

symfony存储用户角色的位置和方式

你好,我们正在尝试理解symfony中关于用户和用户角色及其工作原理的逻辑.我是symfony的新手,我遵循本教程:http: //symfony.com/doc/current/security/entity_provider.html

一切都在我的项目中完美无缺,但是当我查看数据库时,我有user表格,所有用户都注册了表格中的数据.

但是用户角色的表在哪里?symfony如何知道谁是ROLE_ADMIN谁,谁是谁ROLE_MODERATOR.如何为所有用户实现具有特定角色并将该角色保存在数据库中,以后我可以从某个管理面板更改它?ACL meybe?

php symfony symfony-security

2
推荐指数
1
解决办法
2654
查看次数

Symfony 3通过手机阵列登录

美好的一天!我想登录我的用户,这是一项微不足道的任务.但问题是按值数组检查用户!

例如,我有实体用户和电话.用户有很多手机.所以我需要通过它拥有的所有手机登录用户.如何使用安全捆绑包的默认工具来完成?

我没有找到像我这样的问题,并阅读有关Symfony安全性的所有文档.我认为唯一要做的就是创建自定义提供程序.但我认为它不能解决我的问题.

任何想法,亲爱的symfoners?:)

php symfony symfony-security

2
推荐指数
1
解决办法
195
查看次数

注册后自动记住我

我正在使用 Symfony 5.2 / PHP8

我的登录表单只是电子邮件 + 密码我使用自动“记住我”

    firewalls:
        endusers:
            ...
            remember_me:
                secret: '%kernel.secret'
                lifetime: 604800 # 1 week in seconds
                path: /
                always_remember_me: true

Run Code Online (Sandbox Code Playgroud)

这没有任何问题

问题是在注册期间,我使用此代码段自动登录用户

            $token = new UsernamePasswordToken(
                user: $user,
                credentials: null,
                firewallName: 'endusers',
                roles: $user->getRoles(),
            );
            $this->container->get('security.token_storage')->setToken($token);
            $this->container->get('session')->set('_security_endusers', serialize($token))
Run Code Online (Sandbox Code Playgroud)

虽然这项工作,但不幸的是并没有触发记住我功能(这对我的理解是正常的,因为记住我通常会被此处未触发的“onloginsuccess”事件触发更高一级)

所以我想知道如何在上面的案例中也设置记住我

php symfony symfony-security symfony5

2
推荐指数
1
解决办法
191
查看次数

期望“Symfony\Component\Security\Core\User\UserInterface”实例作为第一个参数

我正在尝试为我的用户的密码添加哈希值,我遵循了symfony 5.3 的指南,当我使用

\n
->setPassword($passwordHasher->hashPassword(\n                $user,\n                \'contrase\xc3\xb1a\'\n            ))\n
Run Code Online (Sandbox Code Playgroud)\n

在测试它是否有效时,我收到错误:

\n
\n

期望“Symfony\\Component\\Security\\Core\\User\\UserInterface”的实例作为第一个参数,但得到“App\\Entity\\Usuario”。

\n
\n

我不明白,因为它的字面意思是按照指南所示写的。
\n这些是我的文件:

\n

用户实体

\n
namespace App\\Entity;\n\nuse App\\Repository\\UsuarioRepository;\nuse Doctrine\\ORM\\Mapping as ORM;\nuse Symfony\\Component\\Security\\Core\\User\\UserInterface;\n\n/**\n * @ORM\\Entity(repositoryClass=UsuarioRepository::class)\n */\nclass Usuario\n{\n    /**\n     * @ORM\\Id\n     * @ORM\\GeneratedValue\n     * @ORM\\Column(type="integer")\n     */\n    private $id;\n\n    /**\n     * @ORM\\Column(type="string", length=255)\n     */\n    private $nombre;\n\n    /**\n     * @ORM\\Column(type="string", length=255)\n     */\n    private $apellidos;\n\n    /**\n     * @ORM\\Column(type="string", length=180, unique=true)\n     */\n    private $email;\n\n    /**\n     * @ORM\\Column(type="json")\n     */\n    private $roles = [];\n\n    /**\n     * @var string The hashed password\n …
Run Code Online (Sandbox Code Playgroud)

php symfony symfony-security symfony5

2
推荐指数
1
解决办法
9924
查看次数