[Ruby/Rails] 정규 표현식에서 암호를 생성하는 방법
마지막
아래 글을 참고하여 게스트 로그인 기능을 추가했습니다.
단순 로그인 게스트 로그인 기능 구현 방법 (제품 조합용)
참고할 만하고 알기 쉬운 기사 추천!
따라서 이 글의 본론은 제 투자조합 사이트에서 안전성을 강화하기 위해 비밀번호로 검증 기능을 추가했는데 상술한 보도대로 실시하면 오류가 발생하기 때문에 이에 대한 정리를 하고자 합니다.
오류 내용
잘못된 내용은 생성된 암호가 정규 표현식 밖의 문자열로 변한 것 같다는 것이다.
logs/development.logActiveRecord::RecordInvalid (バリデーションに失敗しました: パスワードの長さは6文字以上で、大文字、小文字、数字、特殊文字がそれぞれ1つずつ含まれている必要があります。):
app/models/user.rb:41:in `guest'
app/controllers/users/sessions_controller.rb:18:in `new_guest'
암호 생성은 SecureRandom.urlsafe_base64
에서 생성되었지만 수정이 필요합니다.
app/models/user.rb def self.guest
find_or_create_by!(email: '[email protected]') do |user|
user.password = SecureRandom.urlsafe_base64
user.name = "ゲスト様"
user.username = "guest"
user.confirmed_at = Time.now
end
end
검증은 다음과 같은 정규 표현식이다.
app/models/user.rb validate :password_complexity
def password_complexity
return if password.blank? || password =~ /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,70}$/
errors.add :password, 'の長さは6文字以上で、大文字、小文字、数字、特殊文字がそれぞれ1つずつ含まれている必要があります。'
end
전제/구현 환경
잘못된 내용은 생성된 암호가 정규 표현식 밖의 문자열로 변한 것 같다는 것이다.
logs/development.log
ActiveRecord::RecordInvalid (バリデーションに失敗しました: パスワードの長さは6文字以上で、大文字、小文字、数字、特殊文字がそれぞれ1つずつ含まれている必要があります。):
app/models/user.rb:41:in `guest'
app/controllers/users/sessions_controller.rb:18:in `new_guest'
암호 생성은 SecureRandom.urlsafe_base64
에서 생성되었지만 수정이 필요합니다.app/models/user.rb
def self.guest
find_or_create_by!(email: '[email protected]') do |user|
user.password = SecureRandom.urlsafe_base64
user.name = "ゲスト様"
user.username = "guest"
user.confirmed_at = Time.now
end
end
검증은 다음과 같은 정규 표현식이다.app/models/user.rb
validate :password_complexity
def password_complexity
return if password.blank? || password =~ /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,70}$/
errors.add :password, 'の長さは6文字以上で、大文字、小文字、数字、特殊文字がそれぞれ1つずつ含まれている必要があります。'
end
전제/구현 환경
컨텐트 수정
수정 방법은 다음과 같이 암호를 생성하여 대응했다.
0-9, a-z, A-Z, 특수 문자의 배열용sample
방법으로 무작위로 4자의 배열로 추출
▼ ▼ ▼sum
방법으로 각 그룹을 합치다
▼ ▼ ▼shuffle
방법으로 카드를 씻는 그룹의 값
▼ ▼ ▼join
문자열에 그룹 문자열을 연결하는 방법
app/models/user.rb def self.guest
find_or_create_by!(email: '[email protected]') do |user|
user.password = [
[*0..9].sample(4),
[*'a'..'z'].sample(4),
[*'A'..'Z'].sample(4),
['#', '?', '!', '@', '$', '%', '^', '&', '*', '-'].sample(4),
].sum([]).shuffle.join
user.name = "ゲスト様"
user.username = "guest"
user.confirmed_at = Time.now
end
end
마지막
처음에 나는 SecureRandom
방법 중 정규 표현식에서 비밀번호를 생성하는 방법이 있는지 조사했지만 찾지 못하고 상술한 방법에 이르렀다.
무리?이런 느낌이 들지만 정규 표현식에서 비밀번호를 만들 수 있어서 정말 좋아요.
Reference
이 문제에 관하여([Ruby/Rails] 정규 표현식에서 암호를 생성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jungissei/items/f29780be07dca5354f02
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def self.guest
find_or_create_by!(email: '[email protected]') do |user|
user.password = [
[*0..9].sample(4),
[*'a'..'z'].sample(4),
[*'A'..'Z'].sample(4),
['#', '?', '!', '@', '$', '%', '^', '&', '*', '-'].sample(4),
].sum([]).shuffle.join
user.name = "ゲスト様"
user.username = "guest"
user.confirmed_at = Time.now
end
end
처음에 나는
SecureRandom
방법 중 정규 표현식에서 비밀번호를 생성하는 방법이 있는지 조사했지만 찾지 못하고 상술한 방법에 이르렀다.무리?이런 느낌이 들지만 정규 표현식에서 비밀번호를 만들 수 있어서 정말 좋아요.
Reference
이 문제에 관하여([Ruby/Rails] 정규 표현식에서 암호를 생성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jungissei/items/f29780be07dca5354f02텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)