【laravel】 「현재의 패스워드」를 체크하는 밸리데이션
3558 단어 Laravel6
개요
패스워드의 변경이나 특별한 조작시에 사양하는 「현재의 패스워드」를 입력하고 나서 실행하는 작업에 관한 투고입니다.
고찰
아래 그림과 같은 "현재 비밀번호"를 확인한 후 "새 비밀번호"를 등록하는 방법의 예입니다.
현재 비밀번호를 확인하기만 하면 laravel 외관의 Hash::check()
와 PHP의 password_verify()
를 컨트롤러에 작성하여 실행할 수 있습니다.
하지만, 거기에 패스워드의 밸리데이션을 관련짓으면(자) 양쪽 모두의 처리를 동시에 실행할 수 없다고 하는 문제가 생깁니다.
이것은 laravel의 밸리데이션이, 値が異なればerrorをreturnしている
로부터입니다.
물론 처리만으로는 실행할 수 있습니다만, 유저에게 에러의 원인이 보이기 어려워져 불친절합니다.
유효성 검사 규칙 만들기
위의 문제를 해결하려면 "현재 암호"를 유효성 검사 규칙으로 만들면 해결할 수 있습니다.
"현재 비밀번호"를 확인하는 자체 검증 규칙을 작성하면 두 번 번거로운 작업을 한 번에 완료할 수 있습니다.
자세한 내용은 다음을 참조하십시오.
【laravel】 rule 객체에 의한 검증 룰의 추가
유효성 검사 규칙 만들기
여기서는 현재 암호를 확인하기 위해 Rules
Current라는 유효성 검사 규칙을 만듭니다.Rules
는 passes()
가 true이면 유효성 검사를 통과하고 false이면 message()
를 반환합니다.
먼저 로그인 한 계정의 암호를 얻으려면 Auth()
에서 암호를 얻습니다.
그런 다음 Hash()
check 메서드에 입력된 암호와 현재 암호를 확인합니다.
Current.phppublic function passes($attribute, $value)
{
$pass = Auth::user()->password;
return (Hash::check($value, $pass));
}
public function message()
{
return 'パスワードが一致しません';
}
유효성 검사 실행
유효성 검사 규칙에서 만든 Current
을 설명합니다.
이것으로 나머지는 컨트롤러로 설정하면 완료됩니다.
새 비밀번호 검증 규칙은 Register 컨트롤러의 복사본입니다.
.php'current_password' => new Current(),
'password' => ['string', 'min:8', 'confirmed',],
참고
Laravel 6.x 검증 / 커스텀 검증 규칙
PHP/password_verify
Reference
이 문제에 관하여(【laravel】 「현재의 패스워드」를 체크하는 밸리데이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gone0021/items/b8a7944cc27522d92b8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래 그림과 같은 "현재 비밀번호"를 확인한 후 "새 비밀번호"를 등록하는 방법의 예입니다.
현재 비밀번호를 확인하기만 하면 laravel 외관의
Hash::check()
와 PHP의 password_verify()
를 컨트롤러에 작성하여 실행할 수 있습니다.하지만, 거기에 패스워드의 밸리데이션을 관련짓으면(자) 양쪽 모두의 처리를 동시에 실행할 수 없다고 하는 문제가 생깁니다.
이것은 laravel의 밸리데이션이,
値が異なればerrorをreturnしている
로부터입니다.물론 처리만으로는 실행할 수 있습니다만, 유저에게 에러의 원인이 보이기 어려워져 불친절합니다.
유효성 검사 규칙 만들기
위의 문제를 해결하려면 "현재 암호"를 유효성 검사 규칙으로 만들면 해결할 수 있습니다.
"현재 비밀번호"를 확인하는 자체 검증 규칙을 작성하면 두 번 번거로운 작업을 한 번에 완료할 수 있습니다.
자세한 내용은 다음을 참조하십시오.
【laravel】 rule 객체에 의한 검증 룰의 추가
유효성 검사 규칙 만들기
여기서는 현재 암호를 확인하기 위해 Rules
Current라는 유효성 검사 규칙을 만듭니다.Rules
는 passes()
가 true이면 유효성 검사를 통과하고 false이면 message()
를 반환합니다.
먼저 로그인 한 계정의 암호를 얻으려면 Auth()
에서 암호를 얻습니다.
그런 다음 Hash()
check 메서드에 입력된 암호와 현재 암호를 확인합니다.
Current.phppublic function passes($attribute, $value)
{
$pass = Auth::user()->password;
return (Hash::check($value, $pass));
}
public function message()
{
return 'パスワードが一致しません';
}
유효성 검사 실행
유효성 검사 규칙에서 만든 Current
을 설명합니다.
이것으로 나머지는 컨트롤러로 설정하면 완료됩니다.
새 비밀번호 검증 규칙은 Register 컨트롤러의 복사본입니다.
.php'current_password' => new Current(),
'password' => ['string', 'min:8', 'confirmed',],
참고
Laravel 6.x 검증 / 커스텀 검증 규칙
PHP/password_verify
Reference
이 문제에 관하여(【laravel】 「현재의 패스워드」를 체크하는 밸리데이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gone0021/items/b8a7944cc27522d92b8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public function passes($attribute, $value)
{
$pass = Auth::user()->password;
return (Hash::check($value, $pass));
}
public function message()
{
return 'パスワードが一致しません';
}
'current_password' => new Current(),
'password' => ['string', 'min:8', 'confirmed',],
Laravel 6.x 검증 / 커스텀 검증 규칙
PHP/password_verify
Reference
이 문제에 관하여(【laravel】 「현재의 패스워드」를 체크하는 밸리데이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gone0021/items/b8a7944cc27522d92b8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)