2011-09-07 20 views
5

私はSinatraとPadrinoの両方でかなりの時間プログラムしています。しかし、私はまだPadrinoのための適切な認証と認可の解決策を見つけることができません。私の期待と私がすでに試したことを説明しましょう。Padrinoの認証と認可のソリューション

私はSinatraを使用して、sinatra-authenticationの宝石とrole_modelの宝石をうまく使用しています。私は一般にMongoDBと話すためにMongoid ORMを使用します。これらの2つの宝石は、一緒に私は、アクセス制御を適用するためにログインしたユーザーの役割をチェックするルートを保護する、autheticationの世話をすることができます。

sinatra認証はPadrinoでは動作しません。これはSinatraに非常に特有のものです。私はそれを複数回試しました。私はすでにomniauthと対応するPadrinoモジュールで護衛を試してみましたが、ある理由か他の理由で、素晴らしいsinatra-autentication gemと同じように動作させることができません。

私は自分自身の解決策を実装しようとする前に(あるいは、Padrinoにシナトラ認証を移植する)ことができます。誰も他の認証と認可ソリューションを提案できますか?現時点では、私は何も想像力を必要としません - 単純なデータベースベースの認証だけで完全に動作します。

答えて

0

内蔵の認証ソリューションを使用することをお勧めします。ちょうどpadrino-adminを見てみましょう。必要なアプリの中で管理なしでPadrino :: Authenticationを使用できます。

これは、ロール/パスに基づいた非常に簡単です。

http://www.padrinorb.com/api/Padrino/Admin/AccessControl/Base.html#allowed%3F-instance_method

+3

padrino-adminを使用すると、adminによって生成されたアカウントモデルを使用する必要がありますそれ); OPにとって最適ではない可能性があります。さらに重要なのは、セキュリティ上の問題(https://github.com/padrino/padrino-framework/issues/384)が公開されていることです。生産にpadrino-adminを配備している人は、このことを認識しておく必要があります。 – pithyless

+2

そのセキュリティ問題は2年前に閉鎖されました。将来の視聴者 – Jonah

1

Padrinoのhas been discussed用のスタンドアロン認証ソリューションが、まだ解決されていません。その間に、1つの一般的な提案はpadrino-wardenを使用することです。

免責事項:私はOPと同様の状況にあり、まだプロダクションでパーソナルウォーデンを実行している経験はありません。

+0

うわー、これについていくつかの光を放つ - これはv1.0に予定されています。独自のソリューションを(推奨事項/提案と共に)プラグインするためのAPIを実装し、認可と認証の間の懸念を分離することになります。 @ pithylessによって強調された問題に注目してください。 –

1

Ryan Batesさんは、これを行う方法について素晴らしいRailsスクリーンキャストを持っています(無料ではない:http://railscasts.com/episodes/250-authentication-from-scratch-revised)。

Rails Magicを修正してSinatraまたはPadrinoで同じことを行うのは難しくありません。

忘れてしまったパスワードなどのような機能がたくさん必要な場合は、これが適していない可能性があります。

3

私は質問が2歳であることを知っています。しかし、私は最近、padrino-wardenがひどく文書化されているのと同じ問題を抱えていました。私は多くの問題に直面しました。だから私はworkaround.orgに私の発見を文書化した。それはあまり幸運なことを助けてくれるかもしれません。

私はpadrino-adminが学ぶ素晴らしい足場と考えます。しかし、ユーザーモデルはむしろ柔軟性がありません。そして、認可の概念は、Padrinoの作者が気に入らないことを奇妙にしています。設定をコントローラに移動するのではなく、中央の場所に配置することです。 (padrino-adminには、ページネーションの欠落や外部キーのサポートがないなどの問題があります)

関連する問題