2015-01-22 1 views
0

Я хочу, чтобы пользователь смог войти с помощью имя пользователя вместо email. По моему поиску я только что нашел, если мы обновляем Sentry конфигурационный файл изLaravel Sentry login using username вместо электронной почты

'login_attribute' => 'email',

к

'login_attribute' => 'username' 

, то он будет работать. Но это не работает для меня. Мое действие для входа:

public function postLogin() 
{ 
    $input = Input::all(); 
    $remember = (Input::has('remember')) ? true : false; 
    try{ 
     Sentry::authenticate([ 
      'username' => $input['email'], 
      'password' => $input['password'] 
     ], $remember); 
    } 
    catch(Exception $e){} 
} 

Любая идея будет оценена. Заранее спасибо.

ответ

0

Может быть, вы передаете по электронной почте 'username' => $input['email'] не должна быть 'username' => $input['username']

+0

Thanks @Helder для вас. Но я пропускаю имя пользователя, но все еще не работаю. – nitin7805

1

Наконец требование изменить теперь я хочу, чтобы войти в систему пользователя с электронной почтой или имя пользователя (любой из них). и я получил решение.

$remember = (Input::has('remember')) ? true : false; 

    $username = Input::get('email'); 
    $password = Input::get('password'); 

    $field = filter_var($username, FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; 
    try{ 

     if (empty($username)) { 
      throw new Cartalyst\Sentry\Users\LoginRequiredException(); 
     } 
     if (empty($password)) { 
      throw new Cartalyst\Sentry\Users\PasswordRequiredException(); 
     } 

     $user = User::where($field, '=', $username)->first(); 
     if (empty($user)) { 
      throw new Cartalyst\Sentry\Users\UserNotFoundException(); 
     } 

     if (!Hash::check($password, $user->password)) { 
      throw new Cartalyst\Sentry\Users\WrongPasswordException(); 
     } 
     Sentry::login($user, $remember); 
    } 
    catch(Exception $e){} 

Теперь я могу войти по электронной почте или по электронной почте. Надеюсь, что это может кому-то помочь.

0
Using this format,  

    try { 
    $username = Input::get('username'); 
    $password = Input::get('password'); 

    if(str_contains($username, '@')) 
    { 
     Config::set('cartalyst/sentry::users.login_attribute', 'email'); 

     $credentials = array(
      'email' => $username, 
      'password' => $password, 
     ); 
    } 
    else 
    { 
     Config::set('cartalyst/sentry::users.login_attribute', 'username'); 

     $credentials = array(
      'username' => $username, 
      'password' => $password, 
     ); 
    } 

    // Try to authenticate the user 
    $user = Sentry::authenticate($credentials, false); 

    return Redirect::intended('app/dashboard'); 

} catch (Cartalyst\Sentry\Users\LoginRequiredException $e) 
    { 
    echo 'Login field is required.'; 
} 
catch (Cartalyst\Sentry\Users\PasswordRequiredException $e) 
{ 
    echo 'Password field is required.'; 
} 
catch (Cartalyst\Sentry\Users\WrongPasswordException $e) 
{ 
    echo 'Wrong password, try again.'; 
} 
catch (Cartalyst\Sentry\Users\UserNotFoundException $e) 
{ 
    echo 'User was not found.'; 
} 
catch (Cartalyst\Sentry\Users\UserNotActivatedException $e) 
{ 
    echo 'User is not activated.'; 
    return Redirect::back()->with('failed', 'Login Failed'); 
} 
Смежные вопросы