2016-12-29 8 views
2

私はlaravelに追いつくのが遅くなっていますが、新しいユーザーを新しいlaravelアプリケーションに登録しようとすると問題になります。ユーザーの役割はユーザーページ(index.blade.php)に表示されず、保存されたユーザー名とパスワードを使用してアプリケーションにサインインすることはできません。 私が直面している他の問題は、ユーザーに割り当てられたロールも表示されないことです。 問題が発生する可能性があり、入力したユーザーパスワードを暗号化するにはどうすればよいですか?laravelを使ってパスワードと役割をデータベースに書き込む

これはあなたがbcrypt()を使用してパスワードを暗号化する必要があり、ストア機能

public function store(Request $request) 
    { 
     //validate data 
     $validation=$this->validate($request, [ 
      'username' => 'required|max:50', 
      'role_id' => 'required|numeric', 
      'email' => 'required|email|max:50' 
     ]); 
     $user = new User; 
     $user->username = $request->username; 
     $user->role_id = $request->role_id; 
     $user->email = $request->email; 
     $user->save(); 
     // redirect 
     Session::flash('message', 'Successfully added new user!'); 
     Session::flash('alert-type', 'success'); 
     return Redirect::to('user'); 
    } 
+0

「dd($ request-> role_id);」とは何ですか?ロールが含まれていない場合は、フォームのコードを投稿してください。 –

+0

どのバージョンをお使いですか? – aimme

+0

私の答えを見て、それは参考になるかもしれません。編集済み – aimme

答えて

1

です:

$user->password = bcrypt($request->password); 
$user->save(); 

を次にあなたがログインできるようになります。

role_idは、コードが正しいので、role_idフィールドがフォーム内にあることを確認してください。あなたのパスワードを暗号化するために、いくつかの切り抜いた方法があります

+0

はいロールテーブル内のIdを参照する外部キーとして組み込まれています –

+0

フォームからコントローラへのパスを確認する必要があります。あなたはフォームを通じてロールIDを追加するでしょうか?したがって、コントローラで 'dd($ request-> role_id);を実行してください。ロールIDまたは 'null'が表示されます。 –

+0

ありがとうAlexey、しかし、クラス 'App \ Hash'が見つかりませんでしたパスワードを暗号化しようとした後に私が受け取ったエラーです。 –

0

、これはのMcrypt PHP拡張

$encrypted = Crypt::encrypt($request->password); 

2.ハッシュを経由して、強力なAES暗号化である

1.通常の暗号化LaravelでBcryptを使用するパスワード

これにより、ハッシュされたパスワードが作成されます。コントローラやモデル内で使用することもできます。 私はあなたのコードでこの方法を使うのが好きです。

$password = Hash::make($request->password); 

3.直接利用bcryptの

Laravel 5では、あなたは直接認証機能を取得するには以下のコマンドbcryptの

$password = bcrypt($request->password); 
+0

どうすれば$ password = Hash :: make( 'password);上に掲示されたコードで。 –

+0

あなたのニーズに合わせてコードを編集しました。 ''あなたのパスワード ''を '$ request-> password'に置き換えてください。 –

+0

大丈夫、試してみましょう –

0

実行を使用してパスワードを暗号化することができます。車を再発明しないでください。

php artisan make:auth 

すべての足場が利用可能になります。 App \ Http \ Controllers \ Auth \ RegisterControllerは必要な変更を行います。役割を追加して既存のACLパッケージを使用するようにしたい場合

登録コントローラー、ユーザーモデルを編集し、必要に応じて新しい役割コントローラーとモデルを作成することで、新しい役割の追加を追加することもできます。

あなたがそれをしたい場合は、とにかくあなたはここにしようとしている方法は、あなたが

  • ユーザーモデル

    User::create([ 
        'username' => $request->username, 
        'email' => $request->email, 
        'password' => bcrypt($request->password), 
        'role_id' => $request->role_id 
    ]); 
    
  • チェックこの一般的な間違い救うことができるかである - 別のものにしますデータベースのパスワード列の長さを確認してください。サイズが64以上であることを確認してください。

  • エーテルユーザーモデルがあります。

    保護された$ fillable = [ '名前'、 '電子メール'、 'パスワード'、 ];

0

Hash::makeは、ハッシュパスワード(暗号化されたパスワード)を作成します。

$password = Hash::make($request->password); 
関連する問題