2010-11-20 20 views
0

私は認証を追加する必要があるレールアプリを持っています。問題は、カスタムユーザーとパスワードフィールド(t_userとt_pass)を持つ従来のデータベースがあることです。さらに、t_passは暗号化されません。私が探している何カスタムフィールドを使用したRails認証

はhttp_basicのようなものですが、私はCURRENT_USERのようなメソッドを持つことができる場所、そしておそらくより良いユーザーインターフェースを持ちます。私は、検証、パスワードリセット、何か必要はありません。私の方法を認証するちょうど方法。私はrestful_authenticationを使用したいと思いますが、私はレール3です。レール3で動作するフォークを見ましたが、この状況を処理するより良い方法があるかどうか疑問に思っていましたか?

答えて

1

それは私には見えます。具体的には、次のようにします:

  • レガシー認証テーブルを使用してユーザーモデルテーブルを作成してください。
  • あなたt_passフィールドに対してチェックするには、このモデルに上書きvalid_password?
  • オーバーライドself.find_for_database_authenticationt_userフィールドに基づいてモデルを見つけることができます。

登録をサポートしたい場合は、おそらく新しい暗号化戦略も作成する必要があります。

ただの警告ですが、プレーンテキストでのパスワードの保存はです。悪い習慣です。何か選択があれば、暗号化されたパスワードを使ってDeviseの標準構造に移行することを真剣に検討します。

+0

私はパスワードを保存することは本当に悪い考えですが、残念ながら私はこの状況で選択肢がありませんでした。幸いにも、それは単なる内部アプリケーションafaikです。 –

0

使用する別の宝石を探しているなら、あなたはDeviseを試すことができます。あなたはあなたが望むものを達成するためにデフォルト設定を拡張/変更することができます。あなたはおそらくあなたの周りDevise、余分な演奏のビットを使用して必要なものを行うことができますように

0

工夫とAuthlogicは二つの潜在的なオプションです。私はそれを使ったことがないので恐れています。しかし、今は非常に人気があるようです。次

あなたはAuthlogicを始めるでしょう:

class User < ActiveRecord::Base 
    acts_as_authentic do |config| 
    config.login_field = :t_user 
    config.crypted_password_field = :t_pass 
    config.crypto_provider = YourCryptoProvider 
    end 
    ... 
end 

行くauthlogicを得るための基礎にrailscastがあります。

この難しい部分は、http://rdoc.info/github/binarylogic/authlogic/master/Authlogic/CryptoProvidersのように独自の暗号プロバイダクラスを作成する必要があることです。authlogicはプレーンテキストのパスワードチェックメソッドを提供していないためです。

上記のように、パスワードを暗号化されたバージョンに移行することを検討します。これがオプションの場合は、認証フレームワークとの戦いを止めることになります。

関連する問題