2015-10-14 70 views
1

我已阅读Laravel 5 Docs about Authentication,但无法设置如所述的登录。Laravel5:身份验证::尝试不按预期方式工作

我的用户表中包含两个字段,用户名和密码(这是键入文本),我已经存储在散列密码这就好比$2y$10$XCyEOyvC6Yp/O6HaeemPheO4KV1I8aEMUytZZt77Yjw9hp/j6uivWnope

这里是我的代码:

public function validateLogin() 
{ 
    $email = Input::get('email'); 
    $pass = Input::get('password'); 
    $pass = Hash::make($pass); 

    $credentials = [ 
      'username' => $email, 
      'password' => $pass 
    ]; 
    if (Auth::attempt($credentials)) { 
     // Authentication passed... 
     return "passed"; 
    }else{ 
     return "nope"; 
    } 
} 

我已经尝试新鲜事物,Auth::attempt始终返回false :( 伊莫它是完全一样的文档所描述的,任何人都知道什么是错的? 感谢

+0

检查你的用户表和配置/ auth.php认证表用户 –

回答

2

你可能不需要做$pass = Hash::make($password)自己打电话。

尝试删除该行,看看它是否工作。

从文档:

<?php 

namespace App\Http\Controllers; 

use Auth; 
use Illuminate\Routing\Controller; 

class AuthController extends Controller 
{ 
    /** 
    * Handle an authentication attempt. 
    * 
    * @return Response 
    */ 
    public function authenticate() 
    { 
     if (Auth::attempt(['email' => $email, 'password' => $password])) { 
      // Authentication passed... 
      return redirect()->intended('dashboard'); 
     } 
    } 
} 

的尝试方法接受键/值对的阵列作为它的第一个参数 。数组中的值将用于在您的数据库表中找到 中的用户。因此,在上面的示例中,用户将通过电子邮件列的值检索 。 如果找到用户,则将 存储在数据库中的散列密码与通过数组传递给方法的散列密码值 进行比较。

更多参考检查:

http://laravel.com/docs/master/authentication#authenticating-users

0

没有ü写在AuthController功能?或者在任何新的/其他控制器中?

如果u写在其他控制器的功能,确保你已经添加在上面

这段代码
use App\User; 
use Validator; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ThrottlesLogins; 
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; 




public function login() 
    { 
     $email = Input::get('email'); 
     $password = Input::get('password'); 
     if (Auth::attempt(['email' => $email, 'password' => $password])) { 
      // Authentication passed... 
      return redirect()->intended('dashboard'); 
     } 
     else{ 
      return redirect()->intended('admin/login'); 
     } 
    } 
相关问题