小编the*_*ite的帖子

使用grunt构建的Angular应用程序中缺少资产

我已经使用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文件的实际位置.

任何建议都非常感谢.

angularjs gruntjs yeoman bower

16
推荐指数
1
解决办法
2万
查看次数

通过IP限制对S3存储桶的访问,而不会影响IAM凭据

我在AWS上有以下用例:

  • 一个存储桶,用于"托管"AngularJS中内置的Web应用程序
  • 自动扩展组中的服务器池,可以修改存储桶的内容

为了确保只在内部提供存储桶内容,我使用了以下存储桶策略来限制对静态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将定期更改.

我尝试了一些解决方案但没有任何乐趣:

  • 使用我的IAM角色的ARN作为原则指定带有"允许"的第二个语句
  • 尝试寻找允许EC2安全组完全访问但无法找到该选项的方法
  • 尝试寻找使IAM角色优先于存储桶策略的方法

我觉得这应该很简单,但我现在感到沮丧:(

amazon-s3 amazon-ec2 amazon-web-services

8
推荐指数
1
解决办法
2786
查看次数

PUT请求不使用Symfony表单和FosRest

我正在尝试使用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)

php forms rest symfony

5
推荐指数
1
解决办法
2940
查看次数