我在当前的Symfony2项目中有一个奇怪的PHP错误:
unexpected T_STRING in /blahblah/Foo/BarBundle/Entity/User.php on line 1
Run Code Online (Sandbox Code Playgroud)
这是一个非常标准的错误,通常与一对不匹配的"或"相关联.
但这里是User.php文件的代码
<?php
namespace Foo\BarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
* @ORM\Entity(repositoryClass="Foo\BarBundle\Entity\UserRepository")
*/
class User extends \FOS\UserBundle\Entity\User
{
// classic user entity
Run Code Online (Sandbox Code Playgroud)
行<?php是第1行.没有引号,奇怪的是这个错误只出现在我的登台服务器上:在具有代码本地副本的2台开发机器上,它的行为符合预期,没有错误或警告.该文件是正确的,缓存已清空.我认为它可能是一个编码错误但它似乎不是这个.我也想过命名空间问题,但服务器上的PHP版本是正确的(5.3.16)
你知道这个错误可能源于什么,或者我可以搜索哪个方向?提前致谢.
我正在使用Symfony2构建一个站点,它将是一个白标类型的站点,其中多个域映射到同一服务器.因此coolsite.customer1.com和aservice.customer2.com将映射到同一站点,但需要与最终用户显示不同.我已经解决了域名,并将唯一配置作为服务加载.
使用FOS UserBundle设置并运行自定义用户(其中存储了domain_id),注册,登录等工作正常,但domain1的用户也可以登录到domain2.这在FOS UserBundle中是预期的.我需要对捆绑包进行修改,以便它只对在分配给它们的域上的用户进行身份验证.
我创建了一个userProvider,它扩展了FOS中的原始userProvider,并重写了loadUserByUsername方法以检查域.见下文:
use FOS\UserBundle\Security\UserProvider as FOSProvider;
use Symfony\Component\DependencyInjection\ContainerInterface;
use FOS\UserBundle\Model\UserManagerInterface;
use Me\CoreBundle\Models\Core;
class UserProvider extends FOSProvider {
/**
*
* @var ContainerInterface
*/
protected $container;
public function __construct(UserManagerInterface $userManager, ContainerInterface $container) {
parent::__construct($userManager);
$this->container = $container;
}
/**
* {@inheritDoc}
*/
public function loadUserByUsername($username)
{
$core = $this->container->get('me_core');
/* @var $core Core */
$user = $this->findUserBy(array(
'username'=>$username,
'domain_id'=>$core->getDomainMap()->getId(),
));
if (!$user) {
throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
}
return $user;
}
public function findUserBy(array …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置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) 我安装了FOSUserBundle,我想添加任何其他角色,例如ROLE_NEW.在sfGuardUser只需做
$this->getUser()->addCredential('new');
Run Code Online (Sandbox Code Playgroud)
在行动,在这?
此外,我如何(管理员)管理所有(首先管理ROLES)用户?在sfGuardUser中我生成了默认的管理页面,在这里?
我正在复活一个已经关闭了几年的网站,我正在将所有内容迁移到Symfony2.我能够将所有旧的用户数据库条目放入fos_user表中.唯一的问题是salt和confirmation_token条目是空的,因为用户不是以标准方式创建的.我希望所有用户重置密码,所以我根本不担心旧的哈希密码.如何一次为13,000个用户生成条目?也许我需要覆盖控制器以在每次请求密码时创建salt和confirmation_token?这方法已经存在吗?似乎其他人之前会遇到这个问题.
谢谢
我正在使用FSOUserBundle,我想覆盖loginAction,我使用了这个方法:
namespace PjDZ\UserBundle\Controller;
use FOS\UserBundle\Controller\SecurityController as BaseController;
class SecurityController extends BaseController {
public function loginAction(\Symfony\Component\HttpFoundation\Request $request)
{
/** @var $session \Symfony\Component\HttpFoundation\Session\Session */
$session = $request->getSession();
// get the error if any (works with forward and redirect -- see below)
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = '';
}
if ($error) {
// TODO: this is a potential security risk (see http://trac.symfony-project.org/ticket/9523)
$error = $error->getMessage(); …Run Code Online (Sandbox Code Playgroud) 在Symfony 2.4项目中,我们的客户希望强制用户每N天更改一次密码.我们看到数据库中有"credentials_expired"和"credentials_expire_at"列,并且在UserChecker类中抛出了一个似乎用于此目的的AccountExpiredException,但我找不到任何关于如何启用或配置此文档的文档特征.
我有一个使用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) 我是作曲家和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 ×5
composer-php ×1
mysql ×1
rest ×1
sonata-admin ×1
symfony-2.1 ×1
symfony-2.7 ×1
syntax-error ×1