【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.)