> 백엔드 개발 > PHP 튜토리얼 > Laravel의 시도 방법을 재정의하는 방법은 무엇입니까? 암호화 방법이 사용자 정의되어 있기 때문입니다.

Laravel의 시도 방법을 재정의하는 방법은 무엇입니까? 암호화 방법이 사용자 정의되어 있기 때문입니다.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-08-04 09:20:17
원래의
1812명이 탐색했습니다.

1

2

<code>Auth::attempt(array('username' => $username, 'password' => $password),false)

</code>

로그인 후 복사
로그인 후 복사

이것의 비밀번호는 본인이 정의한 방법으로 암호화됩니다

답글 내용:

1

2

<code>Auth::attempt(array('username' => $username, 'password' => $password),false)

</code>

로그인 후 복사
로그인 후 복사

이것의 비밀번호는 본인이 정의한 방법으로 암호화됩니다

문서는 실제로 작성되지 않았지만 소스코드를 보면 알 수 있습니다

Auth 메소드 구현은 IlluminateAuthGuard

에 있습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<code>    /**

     * Attempt to authenticate a user using the given credentials.

     *

     * @param  array  $credentials

     * @param  bool   $remember

     * @param  bool   $login

     * @return bool

     */

    public function attempt(array $credentials = [], $remember = false, $login = true)

    {

        $this->fireAttemptEvent($credentials, $remember, $login);

 

        $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);           

         

        // 看这里

        // If an implementation of UserInterface was returned, we'll ask the provider

        // to validate the user against the given credentials, and if they are in

        // fact valid we'll log the users into the application and return true.

        if ($this->hasValidCredentials($user, $credentials)) {

            if ($login) {

                $this->login($user, $remember);

            }

 

            return true;

        }

 

        return false;

    }

     

    /**

     * Determine if the user matches the credentials.

     *

     * @param  mixed  $user

     * @param  array  $credentials

     * @return bool

     */

    protected function hasValidCredentials($user, $credentials)

    {

        // 执行认证驱动器的validCredentials方法

        return ! is_null($user) && $this->provider->validateCredentials($user, $credentials);

    }</code>

로그인 후 복사

기본값은 eloquent를 인증 드라이버로 사용하는 것이므로 내부 구현을 살펴보세요IlluminateAuthEloquentUserProvider

1

2

3

4

5

6

<code>    public function validateCredentials(UserContract $user, array $credentials)

    {

        $plain = $credentials['password'];

 

        return $this->hasher->check($plain, $user->getAuthPassword());

    }</code>

로그인 후 복사

따라서 확인 논리를 변경하려면 원래 드라이버를 상속한 다음 verifyCredentials에서 논리를 다시 작성하면 됩니다.

1

2

3

4

5

6

7

8

9

<code>class TestUserProvider extend EloquentUserProvider

{

    public function validateCredentials(UserContract $user, array $credentials)

    {

        $plain = $credentials['password'];

 

        return md5($plain) == $user->getAuthPassword();

    }

}</code>

로그인 후 복사

마지막으로 드라이버를 설정합니다. AppServiceProvider의 boot()를 로드하는 것이 좋습니다

1

<code>Auth::setProvider(new TestUserProvider());</code>

로그인 후 복사

문서에 적혀있어요! 너무 게으르지 말고 문서를 읽어보세요. 최근에 질문하신 내용이 모두 문서에 적혀 있습니다.

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿