S3上的Angular 4应用程序在重定向后拒绝访问

时间:2018-01-05 18:02:03

标签: angular amazon-s3 firebase-authentication angularfire2

我已经构建了一个简单的角度4应用程序,它使用firebase作为我的身份验证。我使用loginWithRedirect,因为loginWithPopup在我的手机上无效。

但是我遇到的问题是重定向离开了页面,很明显,要进行身份验证,然后回到mysite.com/login,但因为它的SPA /login不存在我正在猜测。

我添加了这个重定向规则,但它似乎没有做任何事情

<RoutingRules>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <HostName>mysite.cloudfront.net</HostName>
      <ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
    </Redirect>
  </RoutingRule>
  <RoutingRule>
    <Condition>
      <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
    </Condition>
    <Redirect>
      <HostName>mysite.cloudfront.net</HostName>
      <ReplaceKeyPrefixWith>#!/</ReplaceKeyPrefixWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

我正在重定向403,因为那是我不断得到的错误。然后我将<script> history.pushState({}, "entry page", location.hash.substring(1)); </script>添加到我的index.html文件的顶部(来自另一个stackoverflow问题的解决方案)。

但仍然得到了403.我没有将应用程序设置为使用hashbangs开始并且不想这样做。

我收到的错误消息:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>0D98B2536B28C06D</RequestId>
    <HostId>8nhnAtzaLxPvWcV3f8zqc=</HostId>
</Error>

编辑:我有一个肮脏的修复方法就是在将用户发送到谷歌进行身份验证之前,导航到'/'以便google重定向回去。如果有办法告诉谷歌重定向到哪里,那就太好了。有吗?

1 个答案:

答案 0 :(得分:0)

我们需要在本文档中提到的“权限”>“存储桶策略”中添加读取访问策略。试试看

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html

{ "Version":"2012-10-17", "Statement":[{ "Sid":"PublicReadGetObject", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::YOUR-BUCKET-NAME/*" ] } ] }