私はentrustを使ってLaravel 5.3のロールベースのアクセス許可を管理しています。もちろん、さまざまなユーザータイプの手動/カスタムログインを使用しています。 Auth::attempt()
は外部テーブルの関係を処理できますか?Laravel Auth :: attempt()は関係を処理できますか?
if(Auth::attempt(['email' => $request->email, 'password' => $request->password, hasRole('teacher') => true])) {
return redirect()->intended('teacher/dashboard');
}
をしかし、私はhasRole()
が未定義の関数であること、エラーを得続ける:基本的に、私はこのような何かをしたいです。私にはuse Zizaco\Entrust\Traits\EntrustUserTrait;
とuse EntrustUserTrait;
が含まれていますが、これは私にこの機能へのアクセスを提供すると思っていましたが、明らかにそうではありません。
hasRole()
はユーザーオブジェクトのメソッドであり、ユーザーオブジェクトはありませんが、ユーザーがすでにオブジェクトを持っているため、試行が成功した後には役割のチェックを行うことができませんロールが間違っていた場合は、資格情報が正しいのでロールアウトする必要がありますが、ロールは必要ではありません。遅くて実用的ではないようだ。
これはどのように処理する必要がありますか? Auth::attempt
の代わりに、ユーザーにログインせず、指定された入力があることを確認してから、役割チェックを実行し、認証されたセッションを開始するための別の機能を使用する方法がありますか?
便利な私のLoginControllerはここにある場合:
<?php
namespace App\Http\Controllers\Teacher;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Validator;
use Zizaco\Entrust\Traits\EntrustUserTrait;
class LoginController extends Controller {
use EntrustUserTrait;
public function showLoginForm() {
return view('teacher/login');
}
public function authenticate(Request $request) {
Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required',
])->validate();
if(Auth::attempt(['email' => $request->email, 'password' => $request->password, hasRole('teacher') => true])) {
return redirect()->intended('teacher/dashboard');
}
return redirect('admin/login')->with('invalid', 'Invalid username or password');
}
}
任意のヘルプや方向がはるかに高く評価されるだろう。ありがとう。あなたは何ができるか
これは必ずしも教師ではないが誰であるかの誰かを記録しますが、別のログインポータル –