我已经使用Yeoman和AngularJS构建了一个应用程序(以及与Grunt和Bower一样的所有内容).
当在本地运行时,它都可以正常工作grunt serve.但是,在运行grunt并部署应用程序之后,有几个缺少的资产,我不确定解决它的最佳方法是什么.
首先,运行Grunt似乎将图像复制到dist但它重命名它们而不调整CSS中的引用. app/images/uparrow.png成为dist/images/3f84644a.uparrow.png.
这是main.scss中的一行:
.table.sortable th.sorted-asc { background-image: url(../images/uparrow.png); }
Run Code Online (Sandbox Code Playgroud)
当它在构建过程中编译为CSS时,它不会重写路径,因此浏览器会尝试加载dist/images/uparrow.png缺少的路径.
其次,加载Bootstrap插件的字体存在问题.app/bower_components/bootstrap/dist/css/bootstrap.css引用CSS引导../fonts/glyphicons-halflings-regular.woff.相对路径得到解决,app/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.wof并且完美运行.
一旦构建完成,供应商CSS就会合并并缩小为一个CSS文件dist/styles/8727a602.vendor.css.但是,字体的相对路径不会被重写.所以它试图在dist/fonts文件夹中查找字体,而不是dist/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.wof文件的实际位置.
任何建议都非常感谢.
我在AWS上有以下用例:
为了确保只在内部提供存储桶内容,我使用了以下存储桶策略来限制对静态IP的访问:
{
"Statement": [
{
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::mybucket.myhost.com/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"x.x.x.x/32"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
这非常适合阻止我们办公室以外的任何人通过HTTP访问存储桶.完善.
但是,自动扩展组中的服务器(使用IAM角色对存储区具有完全权限)无法访问存储区.似乎S3存储桶策略优先.我无法将其IP添加到存储桶策略,因为它是一个扩展组,它们的IP将定期更改.
我尝试了一些解决方案但没有任何乐趣:
我觉得这应该很简单,但我现在感到沮丧:(
我正在尝试使用FosRest和Symfony表单在Symfony中为用户管理编写一个简单的restful控制器.我的应用程序由Amazon DynamoDB支持,但我不认为这很重要.
我有DELETE,GET和POST(新用户)都完美无缺.
我现在来写PUT动作(编辑用户)似乎不起作用.我花了很多年头撞在砖墙上,我无法解决这个问题.
为了创建PUT,我基本上复制了POST操作,但是修改它以首先加载旧对象.
在POST中,User对象自动由$ form-> handleRequest($ request)行填充;
这似乎不适用于PUT操作,用户对象不会被填充/修改.我检查了$ _REQUEST数组,并且正在提交数据.由于缺乏对PUT的浏览器支持,我通过使用查询参数_method = PUT对数据进行POST来调用该操作(对DELETE工作正常,并且它正在路由到正确的位置).
这是我的POST动作有效:
public function postUsersAction(Request $request)
{
$user = new User();
$user->setTable($this->getTable());
$formBuilder = $this->createFormBuilder($user, array(
'validation_groups' => array('registration', '')))
->add('username', 'text')
->add('password', 'password')
->setAction($this->generateUrl('post_users'))
->setMethod('POST')
->setAttribute('validation_groups', array('registration'));
$roles = $this->getFlattenedRoles($this->getRoles());
$formBuilder->add('roles', 'choice', array(
'choices' => $roles,
'multiple' => true,
'expanded' => true
));
$form = $formBuilder->add('save', 'submit')->getForm();
$form->handleRequest($request);
if ($form->isValid())
{
$user->save();
$params = array('user' => $user);
$view = $this->view($params, 200)
->setTemplate("MyRestBundle:User:newconfirm.html.twig");
return $this->handleView($view);
}
$params = …Run Code Online (Sandbox Code Playgroud)