2016-03-21 11 views
1

'da oturum açmış olsa bile Null değerini döndürür. Burada yeni kayıtlı kullanıcının mağaza yöntemi verileri veritabanına kaydedilir ve sonra yeni kullanıcı oturum açar. Kullanıcı kimlik doğrulamasından sonra mağaza yöntemi denetleyiciyi tetikler. yöntemini göster ve show yöntemi içinde dd (Auth :: user()) null null döndürür. Route middleware grubunda benim rotalarım ve denetleyicileri var.Onun oturum açamayacağımı anlamadımBu sorunu çözebilirim? Auth :: user(), kullanıcı

public function store(Request $request) 
{ 
    // 
    $data = $request->all(); 
    print_r($data); 
    $rules = array(
     'username' => 'unique:users,username|required|alpha_num', 
     'password'=>'required|alpha_num', 
     'full_name'=>'required', 
     'email'=>'required|unique:users,email' 
    ); 

    // Create a new validator instance. 
    $validator = Validator::make($data, $rules); 
    if($validator->fails()){ 

     $errors=$validator->messages(); 
     return Redirect::route('user.create')->withErrors($validator); 

    }else{ 

     $user=new User(); 
     $user->username=$request->username; 
     $user->password=Hash::make($request->password); 
     $user->full_name=$request->full_name; 
     $user->email=$request->email; 
     $user->joined=date('d-m-y H-i-s'); 
     $user->save(); 


     if(Auth::attempt(['username'=>$request['username'],'password'=>$request['password']])){ 

      return redirect()->route('user.show',[$request['username']]); 
     } 
    } 

} 


public function show($user) 
{ 

    $indicator=is_numeric($user)?'user_id':'username'; 
    $info=User::where($indicator,'=',$user)->get()->first(); 
    if($info){ 

     dd(Auth::user()); // returns null 
     $data=array('info'=>$info); 
     return View::make('user.show')->with('info',$data); 
    }else{ 
     echo "this user doesn't exist"; 

     $info=User::where($indicator,'=', Auth::user()->$indicator)->first(); 
     $data=array('info'=>$info); 
     return View::make('user.show')->with('info',$data); 
    } 
} 

benim kullanıcı modeli:

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Contracts\Auth\Authenticatable; 
class User extends Model implements Authenticatable 
{ 

    use \Illuminate\Auth\Authenticatable; 
    protected $table = 'users'; 
    public $timestamps = false; 


} 
+0

Varsayılan kimlik doğrulamayı kullanıyorsunuz veya elle düzenlediniz mi? – Hamelraj

+0

kullanıcı modelimi benim soruma ekledi ..plz kontrol .. nasıl kimlik doğrulaması kullanıyorum ... hiçbir şey manuel –

+0

Eğer laravel 5.2 kullanırsanız, tüm URL'lerde rotalarda web bekçi grubuna sahip olmalısınız. Çünkü "web" ara katmanındaki oturum ara katman yazılımı. –

cevap

1

mağaza fonksiyonunun son if Önce ve $ kullanıcıyı kaydettikten sonra Şimdi Auth::user() hep dönecektir Auth::login($user);

 $user->save(); 

    Auth::login($user); 

//In case of adding a new user, Even the below If is not necessary 
    if(Auth::attempt(['username'=>$request['username'],'password'=>$request['password' ]])){ 


     return redirect()->route('user.show',[$request['username']]); 
    } 

eklemek $user

+0

neden auth girişimi kullanmalıyım auth :: attempt..doesn't auth :: girişimi otomatik olarak giriş yapamazsınız? –

+1

@ AL-zami Cevabımı düzenledim. Yaptığın şey biraz garip! DB'ye yeni ekledikten sonra Auth :: attempt() kontrol etmenize gerek yok! Auth :: girişimi, kullanıcının kaydolmaması için kullanılır. bir kayıttan sonra sadece Auth :: login ($ user); Tamam olacak –

+0

yeterince güzel :) teşekkürler –

İlgili konular