2017-09-02 151 views
0

我试着去创造登录表单及其控制器,但是当我尝试登录它不工作任何一个可以帮助我,我在laravel很新。Laravel 5.4认证

这里是我的形式

<form action="/login" method="post"> 
     {{ csrf_field() }} 

     <div class="form-group has-feedback"> 
      <input type="email" name="email" class="form-control" placeholder="Email"> 
      <span class="glyphicon glyphicon-envelope form-control-feedback"></span> 
     </div> 
     <div class="form-group has-feedback"> 
      <input type="password" name="password" class="form-control" placeholder="Password"> 
      <span class="glyphicon glyphicon-lock form-control-feedback"></span> 
     </div> 
     <div class="row"> 
      <div class="col-xs-7"> 
       <div class="checkbox"> 
        <label> 
         <input type="checkbox"> Remember Me 
        </label> 
       </div> 
      </div> 
      <!-- /.col --> 
      <div class="col-xs-5"> 
       <button type="submit" class="btn btn-primary btn-raised btn-block ">Sign In</button> 
      </div> 
      <!-- /.col --> 
     </div> 
    </form> 

,这里是我的路线

Route::get('/login', '[email protected]'); 
Route::post('/login', '[email protected]'); 

和我的LoginController是

class loginController extends Controller 
{ 
    public function __construct(){ 
     $this->middleware('guest', ['except' => 'destroy']); 
    } 

    public function create(){ 

     return view('pages.admin.login'); 
    } 


    public function store(){ 

     if(! auth()->attempt(request(['email', 'password']))){ 
      return back()->withErrors([ 
       'message' => 'Please check your credentials' 
      ]); 
     } 

     return redirect('/home'); 
    } 


} 

我的用户模式是

class User extends Authenticatable 
{ 
    use Notifiable; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'fname','oname','lname', 'email', 'phone','password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

请在那里我我对这些,你发送请求的返回值做错了,当我输入的电子邮件和密码,我的凭据只是刷新并返回到登录页面

+0

请添加错误消息 –

+0

它不会引发错误 – ProtanzaPlus

回答

0

这是你的企图功能应该是怎么样的:

if(Auth::attempt(['email'=> $request['email'],'password' => $request['password'] ]) 
+0

SQLSTATE [42S22]:列未找到:1054未知列在“例如@ gmail的“where子句”(SQL:从'users'选择*其中'例如@ gmail' =和'bxndbnbsd'为空限制1) – ProtanzaPlus

+0

它给我的错误,即使我有电子邮件地址和密码filds – ProtanzaPlus

+0

明确查询不正确,请注意SQL查询其说法,其中例如@ gmail的=代替电子邮件= .... – Sletheren

0

你的功能应该是这样用Request门面。

public function store(Request $request){ 

    if(! auth()->attempt($request->only(['email', 'password']))){ 
     return back()->withErrors([ 
      'message' => 'Please check your credentials' 
     ]); 
    } 

    return redirect('/home'); 
    } 
+0

Stil它做同样的,我改变和修改它,但仍然是相同的,它不工作 – ProtanzaPlus

0

顶部添加这些的LoginController

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Auth; 

和修改store方法

public function store(Request $request){ 

    $email = $request->email; 
    $password = $request->password; 

    if (! Auth::attempt(['email' => $email, 'password' => $password])) { 
     // Authentication Failed... 
     return back()->withErrors([ 
      'message' => 'Please check your credentials' 
     ]); 
    } 

    return redirect('/home'); 
} 

同时删除从$hiddenpasswordUser模型。

/** 
* The attributes that should be hidden for arrays. 
* 
* @var array 
*/ 
protected $hidden = [ 
    'remember_token', 
]; 

希望它有帮助。

0

您可以使用PHP的工匠制作:AUTH和laravel会产生需要包括控制器登录的一切,那么你就可以进入你的资源和编辑,使它看起来你如何想象。

这就是我的登录控制器看起来像使用PHP工匠化妆后:AUTH

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 

class LoginController extends Controller 
{ 


    use AuthenticatesUsers; 

    /** 
    * Where to redirect users after login. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/home'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest')->except('logout'); 
    } 
}