我目前正在Symfony(2+)上编写自定义控制台命令.
我的命令调用一个使用安全上下文和依赖注入的服务(检查角色).
为了在我的服务中保持安全性检查,我想创建一个特定的用户并在我的控制台命令中记录该用户.
我如何模拟该登录并在我的命令中具有可用的安全上下文?
我的服务检查:
if ($this->securityContext->getToken() == null ||
!$this->securityContext->isGranted('IS_AUTHENTICATED_FULLY')
)
Run Code Online (Sandbox Code Playgroud)
我的命令是扩展ContainerAwareCommand的经典控制台命令
最好的祝福,
我有一个新的Symfony 2.8安装,带有doctrine和MySQL 5.6堆栈.
执行完之后doctrine:schema:update --force,我可以看到
Database schema updated successfully! "x" queries were executed
这是我的问题:即使我多次执行它,学说总是会发现架构差异.
有了--dump-sql,我可以看到所有这些查询都与:
但是,当我检查我的数据库时,这些列已经有一个NOT NULL.
以下是单个属性/列的示例:
class MyEntity
{
/**
* @ORM\Id
* @ORM\Column(type="string", length=5, name="cd_key")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $code;
...
Run Code Online (Sandbox Code Playgroud)
这是一个结果SHOW CREATE TABLE my_entity;:
CREATE TABLE `my_entity` (
`cd_key` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
`label` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`number` int(11) NOT NULL,
PRIMARY KEY (`cd_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;
Run Code Online (Sandbox Code Playgroud)
在这里,查询原则尝试使用以下 …
我有一个其中定义了实体的包。我希望能够以这种方式配置这个包,这个实体将或不会相关。因此,如果 bundle 配置正确,则不应使用app/console doctrine:schema:updateetc创建实体表,或者应该 - 它应该取决于配置。
如何有条件地“禁用”实体,使其表不会被创建app/console doctrine:schema:update?
尝试在现有Xamarin.iOS应用程序上使用新的AppCenter时,AppCenter.Crashes API遇到了一些麻烦。
我遵循“入门”部分,并在AppDelegate.cs中添加以下代码:
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
// ...
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
//...
// App Center
AppCenter.Start("xxxxxxx-xxxx-xxxx-xxxx", typeof(Analytics), typeof(Crashes));
return true;
}
Run Code Online (Sandbox Code Playgroud)
我还安装了相应的NuGet软件包(这是我的packages.config中的相应行)
<package id="Microsoft.AppCenter" version="1.5.0" targetFramework="xamarinios10" />
<package id="Microsoft.AppCenter.Analytics" version="1.5.0" targetFramework="xamarinios10" />
<package id="Microsoft.AppCenter.Crashes" version="1.5.0" targetFramework="xamarinios10" />
Run Code Online (Sandbox Code Playgroud)
请注意,如果我禁用AppCenter.Crashes模块:
AppCenter.Start("xxxxxxx-xxxx-xxxx-xxxx", typeof(Analytics));
Run Code Online (Sandbox Code Playgroud)
一切都很好(我可以在App Center后端看到Google Analytics(分析))
但是启用了AppCenter.Crashes模块后,我的应用程序崩溃,控制台中显示以下消息:
11:24:53.521334 +0100 MyApp.iOS [AppCenter] VERBOSE: +[MSAppDelegateForwarder addTraceBlock:]_block_invoke_2/101 Start buffering traces.
11:24:53.521381 +0100 MyApp.iOS [AppCenter] DEBUG: +[MSAppDelegateForwarder load]_block_invoke/48 Application delegate forwarder is enabled. It may use swizzling.
11:24:53.521587 +0100 …Run Code Online (Sandbox Code Playgroud)