ユーザーを作成し、その後 BCrypt を使用して認証できる単純な iOS/Rails アプリケーションをセットアップしようとしています。BCrypt の指示に従おうとしましたが、認証プロセスが機能しません。Railsはとても初めてなので、単純なことを台無しにしていると確信しています!
新しいユーザーを作成するには:
users_controller.rb 内
# POST /users
# POST /users.json
def create
@user = User.new(user_params)
@user.password = user_params[:password]
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
def user_params
params.require(:user).permit(:username, :password)
end
user.rb 内
def password
@password ||= Password.new(password_hash)
end
def password=(new_password)
@password = Password.create(new_password)
self.password_hash = @password
end
サーバー上:
2014-08-21 19:32:05 -0500 で 192.168.2.6 の POST "/users.json" を開始しました JSON パラメーターとして UsersController#create で処理: {"username"=>"testtest", "password"=>" [FILTERED]", "user"=>{"username"=>"testtest"}} (0.1ms) トランザクションの開始 User Exists (20.8ms) SELECT 1 AS one FROM "users" WHERE "users"."username" = 'testtest' LIMIT 1string
列の型に挿入されたバイナリ データpassword_hash
SQL (0.8ms) INSERT INTO "users" ("created_at", "password_hash", "updated_at", "username") VALUES (?, ?, ?, ?) [["created_at", "2014-08-22 00 :32:05.960378"]、["password_hash"、"$2a$10$UzLdD7ytQXKRDU5MhAawJuFQ3R4oQlPyXh/V4GehNP692fsSpK6wK"]、["updated_at"、"2014-08-22 00:32:05.960378"]、"テスト"ユーザー名"、"テスト" ]] (1.3ms) commit transaction Rendered users/show.json.jbuilder (0.3ms) Completed 201 Created in 136ms (Views: 31.9ms | ActiveRecord: 23.5ms)
ユーザーを認証します。
sessions_controller.rb 内
def create
if @user = User.authenticate(params[:username], params[:password])
session[:user_id] = @user.id
render :show
else
flash.now[:alert] = "Invalid login/password combination"
render :action => 'fail'
end
end
user.rb 内
def self.authenticate(username,password)
@user = User.find_by_username(username)
return @user.password == password
end
サーバ:
*2014-08-21 19:38:26 -0500 で 192.168.2.6 の POST "/session" を開始しました。SessionsController#create as / パラメーター: {"username"=>"testtest", "password"=>"[ FILTERED]", "session"=>{"username"=>"testtest", "password"=>"[FILTERED]"}} ユーザー負荷 (0.2ms) SELECT "users".* FROM "users" WHERE "users "."username" = 'testtest' LIMIT 1 Rendered sessions/fail.json.jbuilder (0.2ms) Completed 200 OK in 105ms (Views: 23.3ms | ActiveRecord: 0.2ms)*
洞察に感謝します!