2016-07-11 5 views
0

standart (사용자 이름 + 암호)이 아닌 전자 메일 주소로 어떻게 로그인 할 수 있습니까? 내 사용자와 웹 사이트를 데이터베이스에 입력하지만 방법이 있습니다 그 사용자 이름 대신 전자 메일 주소로 변경하려면 Gii를 사용할 때 많은 오류가 발생하고 오류를 수정하려고해도 오류를 수정하려고 시도합니다.사용자 이름이 아닌 전자 메일 및 암호 로깅 Yii 2

+0

http://codingbin.com/yii-login-with-email- only/여기에서이 대답을 읽으십시오 – MKD

답변

4

먼저 SiteController 또는 다른 컨트롤러를 찾으십시오. 인덱스 라우트에 사용하십시오. 로그인 경로에 해당하는 조치 기능이 있어야합니다. 일반적으로 서명은 public function actionLogin()입니다.

초기화 된 모델 (일반적으로 LoginForm 모델)이 표시되어야합니다. 모델에는 사용자 신빙성을 판단하기 위해 점검되는 로그인 로직에 대한 기능이 있어야합니다. 이 함수는 다른 login 함수를 호출하고 User 객체는 첫 번째 인수/매개 변수로 필요합니다. 기능은 대개 $this->getUser() 기능입니다.

이 값은 사용자가 지정한 조건/특성으로 사용자를 가져 오는 실제 데이터 모델에 대한 호출을 가리 킵니다. 이것은 전자 메일 일 수도 있고 고유 할 필요가없는 다른 것일 수도 있지만 일반적으로 usernameemail과 같은 고유 한 데이터 속성을 사용하려고합니다. 이 함수는 사용자 데이터 모델을 사용합니다. Gii 기본적으로이 함수를 호출합니다. User::findByUsername(search_property)

Yii2는 Identity 인터페이스를 구현하는 기본 사용자 모델을 제공합니다. 그것이 당신이 필요로하는 조정을하고 싶은 곳입니다. 그것은 필요한 정적 함수 findByUsername() 또는 이와 유사한 것이 있어야합니다. 정적 데이터 내에서 사용자를 찾기 위해 Yii2 기본 검색을 찾으면 Gii를 사용하여 생성했다고 가정 한 사용자 (사용자) 데이터 모델에 링크해야합니다.

내 GII 순서는 일반적으로 다음과 같습니다

  1. 목록 항목
  2. 생성하는 yii2 - 기본 yii2 - 고급 사용 작곡가/
  3. (내가 거기에 사용자 테이블이) 데이터베이스 생성 및 설정 config/db.php
  4. 에서 적절한 DB 자격 증명 GII
  5. 사용하여 데이터 모델을 만들기 model/OldUser.php
  6. 에 기본 model/User.php 이름 바꾸기
  7. 클래스 선언에 implements yii\web\IdentityInterface을 추가하여 Yii2 자유롭게 주어진 세션 관리를 허용하도록 새로 생성 된 사용자 모델이 IdentityInterface를 구현하도록합니다.
  8. IdentityInterface의 모든 필수 메소드를 구현하십시오. `model/OldUser.php '에서 확인하실 수 있습니다.
  9. 이 광산은 일반적으로 this

    처럼이 도움이 되었으면 좋겠 볼 findUserByEmail($email) 또는 findUserByUsername($username)

에 정적 함수를 만듭니다.

+0

아주 잘 설명됩니다. (Y) +1 –

+0

@Funso Poola 정말 대답 해 주셔서 감사합니다. 지금 시도해 보겠습니다. – RosS

+0

@Unknown, 감사합니다. –

0

내가 조언을 위해 U 감사합니다, 그냥 때문에 YII 기본 사용자 이름 loggin에의 대신에 사용자 이름, 어디서해야 어디서나 이메일을 변경했다

관련 문제