http://www.128bitstudios.com/2011/11/21/authentication-with-sinatra/
シンプルで素敵な Sinatra BCrypt 認証システム - 説明をいただければ幸いです =)
BCrypt を使用して一緒に Sinatra 用に作成された非常に単純な認証システムに関するこの非常に優れた記事を見つけました。これは素晴らしくシンプルで、優れた古典的なコードが続いていると思います。
しかし、私はそれを理解するのに苦労しています。はい、私は初心者です。少なくともコードの一部を説明していただけると本当にありがたいです。私が特に興味を持っているのはこの部分です
post "/signup" do
password_salt = BCrypt::Engine.generate_salt
password_hash = BCrypt::Engine.hash_secret(params[:password], password_salt)
#ideally this would be saved into a database, hash used just for sample
userTable[params[:username]] = {
:salt => password_salt,
:passwordhash => password_hash
}
session[:username] = params[:username]
redirect "/"
end
post "/login" do
if userTable.has_key?(params[:username])
user = userTable[params[:username]]
if user[:passwordhash] == BCrypt::Engine.hash_secret(params[:password], user[:salt])
session[:username] = params[:username]
redirect "/"
end
end
haml :error
end
私は、そのようなことで私よりもはるかに優れた人によって書かれたことを考えると、コードに問題はないと思いますが、エラーが含まれている可能性がありますが、ほとんどの場合そうではありません. 私は Sinatra と BCrypt の使用の両方にまったく慣れていないので、誰かが手順とパスワードを暗号化する方法を説明していただければ幸いです。
リンクにアクセスすると、残りのコードはすべてそこにあります。ここにすべてを貼り付けても意味がありません。
また、BCryptEngine がユーザーの param :password からソルトを作成することを正しく理解していると思いますが、ユーザーをテーブルやその他すべてのものに保存する方法を理解できません。ありがとう :)