Bcrypt를 사용하지 않고 암호화하려면
개시하다
만약 Rails에서 bcrypt를 사용한다면 암호화와 사용자가 로그인할 때의password간단하게 confirmation을 실현할 수 있습니다.
그러나 암호화 같은 것이 멋있기 때문에 자신도 시도해 보고 싶어서 bcrypt로 암호를 암호화하지 않는다.
요컨대 rails new secure
rails g model user name:string mail:string password:string
rails g controller users index show edit new
준비 완료
일반 등록 후 로그인 가능
users_controller.rb
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find params[:id]
end
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user.save
redirect_to users_path
else
render :new
end
end
def edit
@user = User.find params[:id]
end
def update
if User.update(user_params)
redirect_to users_path
else
render :edit
end
end
private
def user_params
params.require(:user).permit(:name,:mail,:password)
end
end
그리고 뷰를 적당히 쓰면 OK.
아무튼 일단 crypt를 사용해 볼게요.
crypt
irb(main):001:0> str = "hello world"
=> "hello world"
irb(main):002:0> p str.crypt("asdf")
"asodDSQaBIZi."
=> "asodDSQaBIZi."
이렇게 하면str.crypt(salt) 같은 문법으로 암호화할 수 있다.
나는 이salt의 값을 어떻게 해야 할지 생각하고 있다. 어쨌든 '시크릿키' 다.
users_helper.달성
users_helper.rbmodule UsersHelper
def secure_pass(password)
secure_password = password.crypt("secretkey")
return secure_password
end
end
이렇게 쓰다
users_controller.rb의create 열기
users_controller.rb def create
password = user_params[:password]
@user = User.create(user_params.merge(password: secure_pass(password)))
if @user.save
redirect_to users_path
else
render :new
end
end
이렇게 등록된 비밀번호가 암호화되었다.
로그인 기능 사용
아무튼 세션스.Controller 만들기
sessions_controller.rbclass SessionsController < ApplicationController
include UsersHelper
def new
end
def create
user = User.find_by(mail: params[:mail])
if user.password == secure_pass(params[:password])
session[:user_id] = user.id
redirect_to users_path
else
render :new
end
end
end
이런 느낌이에요.
이렇게 하면 로그인할 수 있다. 로그인한 비밀번호의 값은 se64GVO 8lvmmU처럼 암호화되었다.
그리고 salt 부분, 이번에는 시크릿키로 어떻게 할까요?
추기
트랙/credentialsyml.enc에 저장하려고 했지만 잘 안 돼서 곤란했지만 WSL을 쓰면 된다는 조언을 받았습니다..
WSL을 사용하여 설정할 수 있습니다.(환경 변수 PATH에 이상한 일이 생겨서 막히기 쉬워요...)
그래서 창에 설치된 ubuntu에EDITOR="vi" rails credentials:edit
거기까지 걸어가다salt:
salt_key: secretkey
이렇게 설정했어요.
이것 괜찮아요?키 사용법Rails.application.credentials.salt[:salt_key]
이런 느낌은 불러도 돼.
이 users 사용하기helper.달성
users_helper.rbmodule UsersHelper
def secure_pass(password)
secure_password = password.crypt(Rails.application.credentials.salt[:salt_key])
return secure_password
end
end
이렇게 써서 쓰셔도 돼요.
알려주셔서 감사합니다.
겸사겸사 말씀드리겠습니다.
Bcrypt를 사용하면 gem install bcrypt
models/user.달성
user.rbclass User < ApplicationRecord
has_secure_password
end
마무리 멘트가 굉장히 쉬워요.confirmation
Reference
이 문제에 관하여(Bcrypt를 사용하지 않고 암호화하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/646e52422379c34eba1c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rails new secure
rails g model user name:string mail:string password:string
rails g controller users index show edit new
준비 완료일반 등록 후 로그인 가능
users_controller.rb
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find params[:id]
end
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user.save
redirect_to users_path
else
render :new
end
end
def edit
@user = User.find params[:id]
end
def update
if User.update(user_params)
redirect_to users_path
else
render :edit
end
end
private
def user_params
params.require(:user).permit(:name,:mail,:password)
end
end
그리고 뷰를 적당히 쓰면 OK.
아무튼 일단 crypt를 사용해 볼게요.
crypt
irb(main):001:0> str = "hello world"
=> "hello world"
irb(main):002:0> p str.crypt("asdf")
"asodDSQaBIZi."
=> "asodDSQaBIZi."
이렇게 하면str.crypt(salt) 같은 문법으로 암호화할 수 있다.
나는 이salt의 값을 어떻게 해야 할지 생각하고 있다. 어쨌든 '시크릿키' 다.
users_helper.달성
users_helper.rbmodule UsersHelper
def secure_pass(password)
secure_password = password.crypt("secretkey")
return secure_password
end
end
이렇게 쓰다
users_controller.rb의create 열기
users_controller.rb def create
password = user_params[:password]
@user = User.create(user_params.merge(password: secure_pass(password)))
if @user.save
redirect_to users_path
else
render :new
end
end
이렇게 등록된 비밀번호가 암호화되었다.
로그인 기능 사용
아무튼 세션스.Controller 만들기
sessions_controller.rbclass SessionsController < ApplicationController
include UsersHelper
def new
end
def create
user = User.find_by(mail: params[:mail])
if user.password == secure_pass(params[:password])
session[:user_id] = user.id
redirect_to users_path
else
render :new
end
end
end
이런 느낌이에요.
이렇게 하면 로그인할 수 있다. 로그인한 비밀번호의 값은 se64GVO 8lvmmU처럼 암호화되었다.
그리고 salt 부분, 이번에는 시크릿키로 어떻게 할까요?
추기
트랙/credentialsyml.enc에 저장하려고 했지만 잘 안 돼서 곤란했지만 WSL을 쓰면 된다는 조언을 받았습니다..
WSL을 사용하여 설정할 수 있습니다.(환경 변수 PATH에 이상한 일이 생겨서 막히기 쉬워요...)
그래서 창에 설치된 ubuntu에EDITOR="vi" rails credentials:edit
거기까지 걸어가다salt:
salt_key: secretkey
이렇게 설정했어요.
이것 괜찮아요?키 사용법Rails.application.credentials.salt[:salt_key]
이런 느낌은 불러도 돼.
이 users 사용하기helper.달성
users_helper.rbmodule UsersHelper
def secure_pass(password)
secure_password = password.crypt(Rails.application.credentials.salt[:salt_key])
return secure_password
end
end
이렇게 써서 쓰셔도 돼요.
알려주셔서 감사합니다.
겸사겸사 말씀드리겠습니다.
Bcrypt를 사용하면 gem install bcrypt
models/user.달성
user.rbclass User < ApplicationRecord
has_secure_password
end
마무리 멘트가 굉장히 쉬워요.confirmation
Reference
이 문제에 관하여(Bcrypt를 사용하지 않고 암호화하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/646e52422379c34eba1c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find params[:id]
end
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user.save
redirect_to users_path
else
render :new
end
end
def edit
@user = User.find params[:id]
end
def update
if User.update(user_params)
redirect_to users_path
else
render :edit
end
end
private
def user_params
params.require(:user).permit(:name,:mail,:password)
end
end
crypt
irb(main):001:0> str = "hello world"
=> "hello world"
irb(main):002:0> p str.crypt("asdf")
"asodDSQaBIZi."
=> "asodDSQaBIZi."
이렇게 하면str.crypt(salt) 같은 문법으로 암호화할 수 있다.나는 이salt의 값을 어떻게 해야 할지 생각하고 있다. 어쨌든 '시크릿키' 다.
users_helper.달성
users_helper.rb
module UsersHelper
def secure_pass(password)
secure_password = password.crypt("secretkey")
return secure_password
end
end
이렇게 쓰다users_controller.rb의create 열기
users_controller.rb
def create
password = user_params[:password]
@user = User.create(user_params.merge(password: secure_pass(password)))
if @user.save
redirect_to users_path
else
render :new
end
end
이렇게 등록된 비밀번호가 암호화되었다.로그인 기능 사용
아무튼 세션스.Controller 만들기
sessions_controller.rb
class SessionsController < ApplicationController
include UsersHelper
def new
end
def create
user = User.find_by(mail: params[:mail])
if user.password == secure_pass(params[:password])
session[:user_id] = user.id
redirect_to users_path
else
render :new
end
end
end
이런 느낌이에요.이렇게 하면 로그인할 수 있다. 로그인한 비밀번호의 값은 se64GVO 8lvmmU처럼 암호화되었다.
그리고 salt 부분, 이번에는 시크릿키로 어떻게 할까요?
추기
트랙/credentialsyml.enc에 저장하려고 했지만 잘 안 돼서 곤란했지만 WSL을 쓰면 된다는 조언을 받았습니다..
WSL을 사용하여 설정할 수 있습니다.(환경 변수 PATH에 이상한 일이 생겨서 막히기 쉬워요...)
그래서 창에 설치된 ubuntu에EDITOR="vi" rails credentials:edit
거기까지 걸어가다salt:
salt_key: secretkey
이렇게 설정했어요.
이것 괜찮아요?키 사용법Rails.application.credentials.salt[:salt_key]
이런 느낌은 불러도 돼.
이 users 사용하기helper.달성
users_helper.rbmodule UsersHelper
def secure_pass(password)
secure_password = password.crypt(Rails.application.credentials.salt[:salt_key])
return secure_password
end
end
이렇게 써서 쓰셔도 돼요.
알려주셔서 감사합니다.
겸사겸사 말씀드리겠습니다.
Bcrypt를 사용하면 gem install bcrypt
models/user.달성
user.rbclass User < ApplicationRecord
has_secure_password
end
마무리 멘트가 굉장히 쉬워요.confirmation
Reference
이 문제에 관하여(Bcrypt를 사용하지 않고 암호화하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sibakenY/items/646e52422379c34eba1c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
EDITOR="vi" rails credentials:edit
salt:
salt_key: secretkey
Rails.application.credentials.salt[:salt_key]
module UsersHelper
def secure_pass(password)
secure_password = password.crypt(Rails.application.credentials.salt[:salt_key])
return secure_password
end
end
Bcrypt를 사용하면 gem install bcrypt
models/user.달성
user.rb
class User < ApplicationRecord
has_secure_password
end
마무리 멘트가 굉장히 쉬워요.confirmation
Reference
이 문제에 관하여(Bcrypt를 사용하지 않고 암호화하려면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sibakenY/items/646e52422379c34eba1c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)