railsでのログインパスワードhas_を使用secure_password


railsを始めたばかりの頃、ユーザーがログインしたアカウントとパスワードは明文の形式で直接データベースに保存されていました.その後、このようにするのは非常に安全ではないことに気づき、ユーザーを直接管理し、データベースを管理する人でもユーザーのパスワードを直接見るべきではなく、クライアントやサーバがユーザー情報を伝送するときも安全ではない.だからこのユーザーのパスワードを暗号化します.
railsフレームワーク自体は暗号化された方法を提供し、gemfileにgemパケットを提供します.
# Use ActiveModel has_secure_password
gem 'bcrypt-ruby', '~> 3.1.2'

そして端末でbundle installのコマンドを実行すれば、使えるはずです.しかし、私は使用中に問題に遭遇しました.
gemfileファイルを引き、gemパッケージをインストールした後、対応するuserのmodelに追加します.
class User < ActiveRecord::Base
   has_secure_password
end

このときhas_secure_passwordには下線があり、undefined methodというヒントがあります.私の最初の反映はgemが正しくインストールされていないことですが、gem listで見るとインストールに成功しました.
最後にrailsで使用されているrubyバージョンが2.0.0でgemfileにも書き込まれていることを確認しましたが、rubymineの設定でruby SDK and Gemsで設定されているrubyバージョンはRVM ruby-1.9.3-P 448です.これによりrailsプロジェクトでは対応するbundleをダウンロードしたものの、ダウンロードしたgemはプロジェクトに使用されず、rubymineのSDK設定を変更すると下線が消えてしまいます.
このときに提供されるパスワード保護機能は、デフォルトのユーザーのパスワード属性がpassword_です.digest、これは暗号化されたパスワードです.ユーザーパスワードの追加と変更時にデフォルトのパスワードの2つのキーはpasswordとpasswordです.confirmationでは、この2つの値が等しい場合にユーザーパスワードが本当に変更されます.そうしないと、フレームワークに自動的に対応するエラーメッセージが提供されます.エラーメッセージは英語で、漢化を完了するにはいくつかのコードが必要です.
ユーザーパスワードをログインして検索するときに使用します.
  user.authenticate(params[:password])でパスワードを検証します.
また,ユーザごとにtokenを生成し,md 5方式を用いることが多い.
ログイン時に入力したコンテンツの正当性(フォーマットの問題)を制御し、次の操作を行います.
 
validates :name, :presence => true, :uniqueness => {:case_sensitive => false}
  validates :email, :presence => true, :uniqueness => {:case_sensitive => false}, :email_format => true
  validates :password, :length => { :minimum => 6 }, :on => :create

上記のいずれかの記入に誤りがある場合、errorが発生します.@userを使用します.error.any?判断を下す.
しかしbootstrapで提供されている表cssチェックのほうが使いやすいと思います.