我本周末开始学习Symfony 2.我没有遇到任何问题,因为我认为框架已有详细记录.
我正在使用FOSUserBundle包进行ACL.我想知道是否有可能使它类似于Yii框架:
$bizRule='return Yii::app()->user->id==$params["post"]->authID;';
$task=$auth->createTask('updateOwnPost','update a post by author himself',$bizRule);
$task->addChild('updatePost');
Run Code Online (Sandbox Code Playgroud)
您可能会在上面的代码段中看到所有详细信息.
如何实现与Symfony 2类似的功能?这可能吗?
我正在尝试设置FOSFacebookBundle和FOSUserBundle,因此用户可以使用注册帐户或Facebook帐户登录.
这里有相关代码:
config.yml:
fos_user:
db_driver: orm
firewall_name: public
user_class: Fam\DiaBundle\Entity\User
from_email:
address: info@famdia.com
sender_name: Staff
registration:
confirmation:
enabled: true
fos_facebook:
file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php
alias: facebook
app_id: 1234567890
secret: abcdefg1234567890
cookie: true
permissions: [email]
culture: us_US
Run Code Online (Sandbox Code Playgroud)
security.yml
#
# app/config/security.yml
#
#
services:
my.facebook.user:
class: Fam\Dia\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
validator: "@validator"
container: "@service_container"
security:
factories:
- "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml"
providers:
chain_provider:
providers: [fos_userbundle, my_fos_facebook_provider]
fos_userbundle:
id: fos_user.user_manager
my_fos_facebook_provider:
id: my.facebook.user
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
firewalls:
public:
pattern: ^/
fos_facebook:
app_url: "http://apps.facebook.com/dia/"
server_url: "http://diafam.com/facebookApp/" …Run Code Online (Sandbox Code Playgroud) 我正在尝试测试一个API调用方法,该方法使用Basic Auth进行安全化,并且需要从安全上下文中检索用户.
我的config_test.yml文件(我正在使用内存数据库进行测试env):
imports:
- { resource: config_dev.yml }
doctrine:
dbal:
driver: pdo_sqlite
path: :memory:
memory: true
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
framework:
test: ~
session: ~
profiler:
enabled: false
web_profiler:
toolbar: false
intercept_redirects: false
swiftmailer:
disable_delivery: true
Run Code Online (Sandbox Code Playgroud)
我创建了一个测试,我按如下方式实例化客户端:
$options = array(
'environment' => 'test',
'debug' => true,
);
$this->client = static::createClient($options);
Run Code Online (Sandbox Code Playgroud)
测试看起来像:
public function testProfileAction()
{
$mockUser = new User();
$mockUser->setUsername("user");
$mockUser->setEmail("user@user.com");
$mockUser->setName("User");
$mockUser->setSurname("User");
$mockUser->setPlainPassword("1234567890");
$this->em->persist($mockUser);
$this->em->flush();
$crawler = $this->client->request('GET', '/api/1/user/profile', array(), array(), array(
'PHP_AUTH_USER' => 'user',
'PHP_AUTH_PW' => …Run Code Online (Sandbox Code Playgroud) 我正在使用FOSUserBundle处理symfony应用程序.如果我没有经过身份验证,我希望在菜单栏中有一个下拉登录表单,它具有与/ login下的完全不同的样式.
我收到'无效的CSRF令牌'.我是symfony2的完全新手,所以也许我犯了一个明显的错误,但我找不到谷歌搜索的解决方案.这是我试过的:
控制器:
<?php
namespace RoiRodriguez\CustomUserBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\SecurityContext;
class DefaultController extends Controller {
/**
* Para requests internos, renderiza la barra de navegación.
* No tiene ruta.
*/
public function navigationAction() {
$params = array (
'csrf_token' => '',
'last_username' => ''
);
if ($this->container->get ( 'security.context' )->isGranted ( 'IS_AUTHENTICATED_FULLY' )) {
$session = $this->getRequest ()->getSession ();
$params ['last_username'] = (null === $session) ? '' : $session->get ( SecurityContext::LAST_USERNAME );
$params ['csrf_token'] = $this->container->get ( …Run Code Online (Sandbox Code Playgroud) 在Symfony 2.4项目中,我们的客户希望强制用户每N天更改一次密码.我们看到数据库中有"credentials_expired"和"credentials_expire_at"列,并且在UserChecker类中抛出了一个似乎用于此目的的AccountExpiredException,但我找不到任何关于如何启用或配置此文档的文档特征.
标准多对多之间的单向关系User和Group实体从FOSUserBundle(和SonataUserBundle).系统:Symfony 2.5,Doctrine 2.4.
PS这不是真正的代码复制.这是不可能的,因为有几个层以不同的格式和位置扩展不同的配置文件,所以如果你发现错误类型,这不是问题.
namespace RAZ\UserBundle\Entity;
/**
* @ORM\Table(name="fos_user_user")
*/
class User
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var Collection
*
* @ORM\ManyToMany(targetEntity="Group")
* @ORM\JoinTable(name="fos_user_user_group")
*/
protected $groups;
}
Run Code Online (Sandbox Code Playgroud)
namespace RAZ\UserBundle\Entity;
/**
* @ORM\Table(name="fos_user_group")
*/
class Group
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
Run Code Online (Sandbox Code Playgroud)
我有一个使用FOSUSerBundle来管理用户的symfony项目,现在我需要通过Simple Rest Webservice访问数据库,注册中的加密是:Sha512,我如何获得与我尝试的FOS相同的哈希结果:
hash('sha512',($salt.$password));
Run Code Online (Sandbox Code Playgroud)
和
hash('sha512',($password.$salt));
Run Code Online (Sandbox Code Playgroud)
但它不起作用!有什么建议 ?
问题已解决,请检查我的答案.
我正在我的Symfony2.7 rest api上建立一个注册端点.我正在使用FosRestBundle和FosUserBundle
这是用户模型:
<?php
namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct() {
parent::__construct();
// your own logic
}
}
Run Code Online (Sandbox Code Playgroud)
\ 这是UserType表单: \
class UserType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', 'email')
->add('username', null)
->add('plainPassword', 'repeated', …Run Code Online (Sandbox Code Playgroud) 我经历了很多stackoveflow问题和文章,但找不到合适的答案.
我正在使用fosuserbundle,hwiouthbundle和lexikjwt bundle.
我正在开发一个基于symfony的api,它将由Android应用程序和角度应用程序使用.
现在我需要注册和登录系统fosuserbundle facebook登录hwiouthbundle和api保护lexikjwt捆绑.
我已经实现了fosuserbundle和hwiouthbundke,两者都没有编写用户控制器.但我需要休息而不是形式.但我无法输入:在路由器中休息.
现在我如何登录,用fosuserbundle注册用户休息?我不想使用fosouth服务器.只需要注册和登录api而不是从网上休息.
我是作曲家和symfony的新手,我已经开始了一个symfony3项目.事情进展顺利,但现在作曲家不会更新我的依赖.我一直在寻找解决方案3个小时.
这是我的控制台日志:
Problem 1
- sonata-project/admin-bundle dev-master requires sonata-project/block-bundle 3.x-dev@dev -> satisfiable by sonata-project/block-bundle[3.x-dev] but these conflict with your requirements or minimum-stability.
- sonata-project/admin-bundle dev-master requires sonata-project/block-bundle 3.x-dev@dev -> satisfiable by sonata-project/block-bundle[3.x-dev] but these conflict with your requirements or minimum-stability.
- Installation request for sonata-project/admin-bundle dev-master -> satisfiable by sonata-project/admin-bundle[dev-master].
Run Code Online (Sandbox Code Playgroud)
还有我的composer.json要求:
"require": {
"php": ">=5.5.9",
"symfony/symfony": "3.0.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"symfony/swiftmailer-bundle": "^2.3",
"symfony/monolog-bundle": "^2.8",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"friendsofsymfony/user-bundle": "dev-master",
"sonata-project/admin-bundle": "dev-master",
"sonata-project/doctrine-orm-admin-bundle": "dev-master"
}, …Run Code Online (Sandbox Code Playgroud) fosuserbundle ×10
symfony ×10
php ×3
acl ×1
composer-php ×1
doctrine-orm ×1
dql ×1
rest ×1
sonata-admin ×1
sql ×1
symfony-2.2 ×1
symfony-2.7 ×1
yii ×1