2010-10-22 22 views
1

Soit dit en passant, j'utilise des rails 3.Comment puis-je utiliser "warden" de l'appareil pour authentifier une application en rack dans la même pile que l'application rails qui utilise l'appareil?

Comment puis-je utiliser « garde » de concevoir pour authentifier une application rack dans la même pile que les rails application qui utilise concevoir?

Mon problème est que quand j'appelle cela:

request.env['warden'] # nil :(

de l'autre application sur la pile de rack je reçois nul!

J'ai intégré dav4rack (webdav) dans mon application rails via config.ru. J'utilise concevoir pour l'authentification dans mon application rails.

Lorsque je tente d'accéder à la ressource de ma dav4rack personnalisée « gardien », request.env [ « gardien »] Je reçois nulle. Comment puis-je utiliser warden pour m'authentifier dans ma ressource dav4rack?

Exemple de config.ru J'utilise:

http://pastie.org/1240732

Répondre

0

Dans votre config.ru, votre pile ne pas utiliser gardien.

Si vous cochez une requête sur votre chemin '/', vous utilisez immédiatement votre application Rack dans votre fichier config.ru. Le warden middlkeware est ajouté sur l'application Rails. Donc, comme votre application en rack appelez n'importe quel autre middleware rack, vous ne pouvez pas avoir les informations du garde

Vous devez définir votre application Rack après le middleware. Parce que sans Warden Middleware, il n'y a pas de capacité de garde disponible.

+0

1. Pouvez-vous s'il vous plait reformuler la première phrase afin qu'elle ait un sens et une grammaire compréhensible? 2. Ne pas concevoir, à partir de mon application rails, mettre automatiquement le gardien dans la pile de rack? – clyfe

+0

J'essaie de le reformuler – shingara

+0

J'ai résolu ceci: http://stackoverflow.com/questions/4009082/rails-3-http-extensions-webdav-and-rack-app-mounting – clyfe