2016-09-08 11 views
1

地元のHorizionサーバーで認証されていないコレクションにアクセスしようとしています。ここでHorizion.io公開読み取りアクセスが可能なコレクション

はここ

[collections.developerProfiles] 

[collections.users] 

[groups.default.rules.read_public_profile] 
template = "collection('developerProfiles').find({id: any()})" 

[groups.authenticated.rules.store_message] 
template = "collection('developerProfiles').store({id: any(), comments: any(), score: any()})" 

[groups.default.rules.read_current_user] 
template = "collection('users').find({id: userId()})" 

は私が要求を行っていますどのように私のschema.tomlです。

const ProfileCollection = _horizon('developerProfiles'); 

    ProfileCollection.find({ 
     id: 'someId' 
    }).fetch().subscribe(collection => { 
     console.log('collection', collection); 
    }) 

ソケットによるエラーです。未処理のエラー:エラー:認証されていない接続は許可されていません。

私の質問:なぜ私は認証された場合にのみ検索が動作しますか?デフォルトルールを定義したとき私はここで何が欠けているのですか?

+0

ねえカルロス、への接続テスト。 'ProfileCollection.find'を認証されていないものとして実行しようとしたときに、あなたの開発コンソールで「操作が許可されていません」という出力を得ていることを確認するだけです。 – dalanmiller

+0

私はこのエラーを受け取ります:auth.js:171Uncaughtエラー:トークンで認証しようとしていますが、私が要求しているリソースが公開されているために奇妙なトークンが存在しません。 –

+0

もし私が@ horizo​​n/clientと反応するのに役立つなら、私はドキュメントのすべての許可を試したようです。 –

答えて

1

私はそれを理解しました。

認証されていないユーザーがコレクションを使用できるようにするには、次の操作を行う必要があります。

1)ホライゾン

const _horizon = Horizon({ 
    authType: 'unauthenticated' 
}); 

2)権限

[groups.default.rules.read_public_profile] 
template = "collection('developerProfiles').find({id: any()})" 

3)わずか数を実行している私が欠けていたものを認証設定()

allow_unauthenticated: true 
+1

私はちょうどあなたのコメントを見た後、これを言うためにここに来ました:D、あなたは基本的に2つのコードパスが必要です。つまり、ユーザーが認証されているため(トークンを持っている場合は 'horizo​​n.hasAuthToken() ') not-yet-authenticated( 'horizo​​n.hasAuthToken()'はfalseを返します)。後者については、ここで示したように 'authType: 'unauthenticated''を使用します。 – dalanmiller

+1

正確!私は難しい道を学んだ...それを愛する。あなたは私の心を読んでいる。 –

関連する問題