我對軌道上的ruby很新,所以我不確定如何實現這一點。我有一張桌子,裏面裝滿了「password_hash」字段。當用戶創建新條目時,他們輸入密碼。我想(顯然)在「password_hash」字段中輸入該密碼的散列。哈希命令去做這個去哪裏?在模型中?其次,當某人使用「銷燬」方法刪除一個條目時,我希望他們必須輸入密碼,並且只有在它的散列匹配爲該條目存儲的散列時才銷燬該條目。我猜這是一個在控制器中的銷燬方法,但我不知道如何執行檢查。散列密碼並要求刪除行爲
0
A
回答
0
對於密碼哈希部分看看這個sreencast http://railscasts.com/episodes/250-authentication-from-scratch。
在同一個截屏視頻中,您可以看到如何驗證用戶。在你的情況下,你只是想使用密碼進行身份驗證。
class SomeModelWithPassword < ActiveRecord::Base
attr_accessible :password
attr_accessor :password
before_save :encrypt_password
validates_presence_of :password, :on => :create
def correct_password?(password_try)
password_hash == BCrypt::Engine.hash_secret(password_try, password_salt)
end
def encrypt_password
if password.present?
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
end
end
end
在你摧毀的行動,你只是檢查它是否是一個正確的密碼
def destroy
@model = SomeModelWithPassword.find(params[:id])
if @model.correct_password? params[:password]
@model.destroy
else
...
end
end
0
這裏正在做你想要什麼的元素。您可以在模型上創建一個attr_accessor,讓它自動生成密碼哈希,然後使用您的控件檢查刪除。 BCrypt(http://bcrypt-ruby.rubyforge.org/)將處理哈希。
你的模型:
require 'bcrypt'
class Entry < ActiveRecord::Base
include BCrypt
def password
@password ||= Password.new(password_hash)
end
def password=(new_password)
@password = Password.create(new_password)
self.password_hash = @password
end
end
你的控制器:
class EntriesController < ApplicationController
...
def destroy
@entry = Entry.find(params[:id])
if @entry.password == params[:password]
@entry.destroy
else
redirect_to @entry, :notice => 'You must enter a valid password to destroy an entry'
end
end
end
end
end
相關問題
- 1. 散列密碼
- 2. 散列密碼
- 3. 密碼散列
- 4. 散列密碼
- 5. 散列密碼
- 6. 如何從散列中刪除密鑰?
- 7. 從Perl散列中刪除密鑰
- 8. 我真的需要散列密碼嗎?
- 9. password_verify - 密碼散列
- 10. 散列密碼,SQL
- 11. PHP:密碼散列
- 12. 散列密碼的加密?
- 13. 加密與散列密碼
- 14. 解密散列密碼
- 15. 驗證密碼散列,並用password_hash
- 16. 散列密碼並與MD5比較
- 17. bootstrap-table密碼列散列
- 18. 合併散列刪除算法
- 19. 通過多個請求進行高效密碼散列
- 20. 要求用戶輸入密碼以刪除Facebook應用程序
- 21. 如何刪除要求,以輸入Access的密碼mdb
- 22. 要求輸入密碼才能卸載/刪除應用程序
- 23. 密碼恢復與sha1密碼散列
- 24. 使用yii存儲密碼爲散列
- 25. Bcrypt密碼散列,因爲它是慢?
- 26. 爲什麼SlowEquals函數比較散列密碼很重要?
- 27. 散列密碼不匹配
- 28. 在cookies中散列密碼
- 29. 訪問散列密碼
- 30. PBKDF2 PHP的密碼散列