我正在尝试从夹具中创建一个新的用户管理器.我正在使用FOSUserBundle和Symfony2.
$userManager = $this->container->get('fos_user.user_manager');
//$userAdmin = $userManager->createUser();
$userAdmin = new UserAdmin();
$userAdmin->setUsername('francis');
$userAdmin->setEmail('francis@francis.com');
$userAdmin->setEnabled(true);
$userAdmin->setRoles(array('ROLE_ADMIN'));
$userManager->updateUser($userAdmin, true);
Run Code Online (Sandbox Code Playgroud)
我总是收到这个错误:
[ErrorException]
Notice: Undefined property:
INCES\ComedorBundle\DataFixtures\ORM\LoadUserAdminData::$container in
/public_html/Symfony/src/INCES/ComedorBundle/DataFixtures/ORM/LoadUserAdminData.php line 16
Run Code Online (Sandbox Code Playgroud) 当有管理员用户的后端时,有一个登录表单,同时在我们网站的公共区域为普通用户提供正常的登录表单,这很有意思.
这可能使用FOSUserBundle吗?如何以"Symfony2"的方式完成?
我有用Symfony 2.8.11和FosUserBundle 2.0.0-beta1编写的应用程序.用户可以通过VPN或基本身份验证连接到站点.大多数情况下,他们在Windows 7上使用Internet Explorer 11.其中一些在站点内以随机形式遇到无效的CSRF令牌问题.问题是用户无法提交表单,即使刷新页面几次也是如此.
我怀疑问题是由日志中的会话持续刷新引起的:
{
"created":1483610056,
"lastUsed":1483610056
} ["csrf","session_times"] []
Run Code Online (Sandbox Code Playgroud)
此外,我怀疑它是由记住我令牌的身份验证引起的(每个问题都已被该令牌验证):
[2017-01-05 10:54:16] security.DEBUG: Remember-me cookie detected. [] []
[2017-01-05 10:54:16] security.INFO: Remember-me cookie accepted. [] []
[2017-01-05 10:54:16] security.DEBUG: Populated the token storage with a remember-me token. [] []
Run Code Online (Sandbox Code Playgroud)
我的安全配置:
...
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
# if you are using Symfony < 2.8, use the following config instead:
# csrf_provider: form.csrf_provider
logout: true
anonymous: true
remember_me:
name: "%session_cookie_remember_name%"
domain: "%session_cookie_domain%"
key: "%secret%" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用FOSUserBundle更改用户的角色.问题是:如果用户同时登录,他必须重新登陆以查看新角色.
有解决方案吗
Noob,有关FOSRestBundle,JMSSerializerBundle和模板的问题.
我正在尝试替换当前通过twig输出json的现有代码以使用FOSRestBundle.这是成功的,从Controller传递的内容最初是在数组中,但现在我正在尝试将表单传递给FOSRestBundle,结果是我的值永远不会被返回.
下面的代码复制了该场景
/**
* my sample get action
* @View(templateVar="form")
*/
public function getAction($id)
{
...
$form = $this->createFormBuilder(array('myValue' => 'SOMEVALUE'))
->add('myValue', 'hidden')
->getForm();
$view = FOSView::create($form);
$view->setFormat('json');
return $this->get('fos_rest.view_handler')->handle($view);
}
Run Code Online (Sandbox Code Playgroud)
回报
{"children":{"_token":[],"myValue":[]}}
Run Code Online (Sandbox Code Playgroud)
我期望在这里看到的是:
{"children":{"_token": "mylongtoken","myValue": "SOMEVALUE"}}
Run Code Online (Sandbox Code Playgroud)
我一直把我的代码基于LiipHelloBundle中的示例,除非我错了,这与他们提供的示例匹配?我出错的任何想法?
在我的应用程序中,我可以在后端更改用户权限和角色.
当用户登录并删除用户的角色时,用户仍然可以访问实际上不允许访问的内容,因为他缺少该角色.仅当用户使用logout/login重新验证自己时,更改才会生效.
所以我的问题是,我可以访问登录用户的会话(不是我)吗?我知道我可以访问我自己的会话并销毁它,迫使我再次登录.但我希望得到任何登录用户的会话.这可能吗?我找不到任何相关的资源.
我使用PdoSessionStorage和symfony2.1以及fosuserbundle.
我正在使用symfony2和FOSUserBundle.
通常,我可以从Controller获取用户数据
$user = $this->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)
要么
$user = $this->container->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)
但是现在,我想从eventlistner获取从Ajax调用的userdata.
可能吗?或不?
我的来源在这里.
namespace Acme\MemberBundle\EventListener;
use ADesigns\CalendarBundle\Event\CalendarEvent;
use ADesigns\CalendarBundle\Entity\EventEntity;
use Doctrine\ORM\EntityManager;
class CalendarEventListener
{
private $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
public function loadEvents(CalendarEvent $calendarEvent)
{
$startDate = $calendarEvent->getStartDatetime();
$endDate = $calendarEvent->getEndDatetime();
$user = $this->container->get('security.context')->getToken()->getUser();//it doesnt work
// load events using your custom logic here,
// for instance, retrieving events from a repository
$companyEvents = $this->entityManager->getRepository('UserBundle:MutorSche')
->createQueryBuilder('company_events')
->where('company_events.event_datetime BETWEEN :startDate and :endDate')
->setParameter('startDate', $startDate->format('Y-m-d H:i:s'))
->setParameter('endDate', $endDate->format('Y-m-d …Run Code Online (Sandbox Code Playgroud) 我正在使用fos用户捆绑和pugx多用户捆绑.我已经阅读了所有文档,我是Symfony的新手.在pugx多用户包中,每个点都有一个样本,但只有一个:成功注册.
这是我的代码:
class RegistrationController extends BaseController
{
public function registerAction(Request $request)
{
$response = parent::registerAction($request);
return $response;
}
public function registerTeacherAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('MyBundle\Entity\PersonTeacher');
}
public function registerStudentAction()
{
return $this->container
->get('pugx_multi_user.registration_manager')
->register('MyBundle\Entity\PersonStudent');
}
}
Run Code Online (Sandbox Code Playgroud)
问题是->get('pugx_multi_user.registration_manager')返回经理.在fos用户覆盖控制器帮助中,他们得到a form或a form.handler.我很难将这些与pugx_multi_user管理器"链接"起来.
我应该在registerTeacherAction()为教师设置角色时设置什么代码,以及registerStudentAction()为成功注册设置学生角色?
我最近使用composer更新了symfony2,现在我无法登录.这是相关文件.如果需要更多数据,请与我们联系.
应用程序/配置/ routing.yml中
app_admin:
resource: "@AppAdminBundle/Resources/config/routing.yml"
prefix: /admin
host: dashboard.muchomonitor.com
app_website:
resource: "@AppWebsiteBundle/Resources/config/routing.yml"
prefix: /
host: www.muchomonitor.com
app_monitor:
resource: "@AppMonitorBundle/Resources/config/routing.yml"
prefix: /
host: dashboard.muchomonitor.com
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
host: dashboard.muchomonitor.com
fos_user_security_reset:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /login
host: dashboard.muchomonitor.com
Run Code Online (Sandbox Code Playgroud)
应用程序/配置/ security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
user:
entity: { class: App\MonitorBundle\Entity\User, property: username }
firewalls:
main:
pattern: ^/
provider: user
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: /
logout: true
anonymous: true …Run Code Online (Sandbox Code Playgroud) 如果存在登录错误,我想自定义错误消息("错误凭据").我这样做却无效.这是模板登录:
{% if error %}
<div>{{ error.message|trans }}</div>
{% endif %}<form action="{{ path('login_check') }}" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="_username" value="{{ last_username }}" />
<label for="password">Password:</label>
<input type="password" id="password" name="_password" />
<input type="hidden" name="_target_path" value="/account" />
<input type="submit" name="login" />
Run Code Online (Sandbox Code Playgroud)
文件config.yml我有这个:
framework:
#esi: ~
translator: { fallback: "%locale%" }
Run Code Online (Sandbox Code Playgroud)
在parametre.yml我有这个:
locale: en
Run Code Online (Sandbox Code Playgroud)
我在MyBundle/Resources/translations/messages.en.ymy目录中添加了该文件:
security:
login:
username: "Username:"
password: "Password:"
submit: Login
forgot_username: "Forgot username"
forgot_password: "Forgot password"
registration: register
# Security
"Bad credentials": "Your user name or password are …Run Code Online (Sandbox Code Playgroud)