0

何らかの理由で、そのビューに添付されているアクセス許可があれば、ログイン後に私のアプリケーションによってリダイレクトされたときに404を取得し続けますが、許可を削除しても問題ありません。権限を追加するが、権限を付与しない場合、私のアプリから404が返ってくるのはなぜですか?

def principalFinder(username, request): 
    return [Authenticated] 

それは何も変更していない:私はすでに、次のコールバックを追加しようとしているAuthTktAuthenticationPolicyおよびIを使用しています。あなたはそれがそのコンテキストとしてクラスmyAEROを使用して見ることができるように

@view_config(route_name='test', context=myAERO, permission='editAln') 
def test(request): 
    return Response(request.authenticated_userid) 

:これは、問題の図である

class myAERO(): 
    __acl__ = [ 
    (Allow, Authenticated, 'editAln') 
    ] 
    def __init__(self, request): 
     self.request = request 

、私が削除した場合ので、認証と間違って何もないようです@view_config()デコレータから「permission = 'editAln」を呼び出すと、私のアプリはログインに使用したユーザ名を返します。

私はこれに絶対に困惑しています。私は403禁止を理解することができますが、私は404のステータスコードを取得し続けている理由は分かりません!私はthis questionが多少関連しているようですが、わかるように私は名前属性をまったく使っていないので、本当に助けにはなりませんでした。これはPyramidを初めて使用していて、私のアプリケーションで何を達成しようとしているのですか(認証されたユーザーのユーザー名に基づいてJSONレスポンスでXHR POST要求に応答する)はそれほど難しいはずがないので、もう少しピラミッドの経験があれば、これを理解するのに役立ちます。

答えて

0

個々のビューのコンテキストとして設定するのではなく、myAEROクラスをルートファクトリとして設定して問題を解決しました。私はMichael Merickel's auth demoからアイディアを得ました。率直に言って私はなぜこれが機能するのか分からないので、理由を説明するコメントはまだ大いに評価されるだろう。

EDIT:もう少し読んだ後は、URL派生とトラバーサルの全体に関係しているように思えますが、私はまだその時点で把握しようとしています。

関連する問題