2016-04-22 20 views
1

すでに認証されている場合でも、フォームからデフォルトの "/ register"にpostメソッドを実行する必要があります。Laravel 5.2デフォルト認証、認証時に登録する方法

現在のところ、私はエラーは発生しませんが、私のデータベースにはレコードがありません。

私のフォームとコードは、ログインしていないときに動作します。 どこで変更する必要がありますか? 私はそのregisterusers.phpの近くだと思うが、そのコードは全く新しいものだ。

+0

コードを投稿できますか?私はLaravelの新鮮なコピーを持っていないので、デフォルトをチェックする...登録コントローラとルートファイルは十分でなければならない –

+0

あなたがそれを行う必要がある場合(あなたが求めるもの)、目的が登録する(別のユーザを追加する)場合"悪いデザイン"。再考することを検討する必要があります。 – Kyslik

+0

ログインしたときに所有者だけが新しい人物を登録できるシステムです。SlateEntropyのソリューションが機能しました。 – cger

答えて

1

ゲストミドルウェアがログインしているユーザーが登録ページにアクセスできなくなるため、デフォルトではこれを行うことはできません。

AuthController(Laravelのapp/Http/Controllers/Authで提供)では、ゲスト以外のユーザー(または認証されたユーザー)がアクセス可能なメソッドを指定できます。

デフォルトでは、ログインしたユーザーにはlogoutメソッドしか使用できませんが、必要に応じて追加できます。

public function __construct() 
{ 
    $this->middleware($this->guestMiddleware(), ['except' => ['logout', 'showRegistrationForm', 'register']]); 
} 

showRegistrationFormregisterが登録を処理し、それを永続化する責任がある、ログインページやフォームを表示する責任があります。

+1

これは非常に簡単な解決策であり、正常に動作します! – cger

0

技術的には、意図したとおりに動作しています。ログインしたユーザーはユーザーを登録できないはずですが、それは理にかなっていません。

しかし、ユーザーを登録しようとする場合は、自分のコントローラー内でRegistersUsersの特性を使用するだけで済みます。これは、このような単純なのです:

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
class RegistrationController extends Controller { 
    uses RegistersUsers; 

    public function create(Request $request){ 
     return $this->postRegister($request); 
    } 
} 

->postRegister()方法がRegistersUsers特性によって提供されます。 \Illuminate\Http\Requestオブジェクトを受け入れ、依存関係として注入されるため、\Illuminate\Http\Requestのインスタンスを渡す必要があります。あなたは簡単に単純にこのような、$this->showRegistrationForm();を呼び出すことにより、同様registrationフォームを表示することができます。

public function show(){ 
    return $this->getRegister(); 
} 

は今、ちょうどそれに応じてルートを添付してください。

関連する問題