로그인 한 후 사용자가 자신의 역할에 따라 URL로 리디렉션되는 기능을 구현하려고합니다. 역할 부분을 설정했지만 로그인 직후 사용자 속성을 테스트하는 데 문제가 있습니다.로그인 후 laravel 5.1
나는 here 지침에 따라 사용자 로그인 페이지를 만들었습니다. 나는이처럼 보이는 AuthController
있습니다
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller {
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/test';
...
}
내 __construct()
기능은 사용자의 유효성을 검사하지만 로그인 후에 만 즉시 사용자 개체에 액세스하는 방법을 모르겠어요.
public function __construct() {
$this->middleware('guest', ['except' => 'getLogout']);
if (\Auth::check()) {
$user = \Auth::user();
if ($user->admin()) {
// an admin
$this->redirectTo = '/admin';
} else {
// it's a client
$this->redirectTo = '/client/dashboard';
}
}
$user = \Auth::user();
if (is_object($user)) {
} else {
$this->redirectTo = '/auth-not-object';
}
}
내가 먼저 관리자 계정으로 로그인을 시도
, 나는 경로/auth-not-object
에 도착, 그 시점에서 모든 인증 된 사용자 개체 없기 때문에이 내가 현재 가지고있는 것입니다. 나는
/login
URL을 방문 할 때 로그인하지만, 나쁜 리디렉션을 얻기 위해 시도한 후
는, 나는이 클래스가 사용하는 특성의 기본 $redirectTo
이라고 생각 /home
로 리디렉션. 즉, 인증 된 사용자가 있어도 $redirectTo
을 변경하지 않고 AuthController __construct()
메서드를 통과 한 것입니다.
How to add extra logic on login condition in Laravel 5.2 및 laravel redirect to url after login과 같은 다른 질문을 발견했지만 그 답변을 적용하는 방법을 모르겠습니다. 예를 들어, 두 번째 질문에 대한 대답으로는 getCredentials()
과 login()
이라는 새로운 방법이 포스터의 원래 클래스에 없습니다. 나는 그들을 추가 할 클래스, 또는 코드베이스에서 어디에서 호출 할 지 모르겠습니다.
다른 유사한 대답은 this과 같이 근본적으로 다른 사용자 인증 방법을 보여줍니다. 이 솔루션을 사용하려면 내 코드를 다시 작성하고 로그인 제한과 같은 보너스 기능을 포함하는 특성을 사용하지 않아야합니다.
로그인 후에도 이러한 내장 된 특성을 사용하면서 사용자를 리디렉션 할 수있는 방법이 있습니까? 이것은을 결정하는 방법은
protected function handleUserWasAuthenticated(Request $request, $throttles, $guard)
{
if ($throttles) {
$this->clearLoginAttempts($request);
}
if (method_exists($this, 'authenticated')) {
return $this->authenticated($request, Auth::guard($guard)->user());
}
return redirect()->intended($this->redirectTo);
}
: 5.1 인증이 5.2 인증과 동일하지만,이 경우이 방법을 구조물에서 모든 것을 제거하고 추가하는 경우
또한> 미들웨어 ('게스트', [ '제외'=> '를 getLogout']) '$ this- 제거,'? 그것이 상자에서 나온 유일한 작품이었습니다. – user151841
App \ Http \ Controllers \ Auth \ AuthController :: handleUserWasAuthenticated()에 전달 된 인수 1이 App \ Http \ Controllers \ Auth \ Request의 인스턴스 여야합니다. Illuminate \ Http \ Request 인스턴스가 있어야합니다. , 메소드 시그니처를 'protected function handleUserWasAuthenticated (\ App \ Http \ Controllers \ Auth \ Request $ request, $ throttles, $ guard) {}로 변경 한 후에도 ...' – user151841
더 나은 솔루션에 대한 내 대답을 편집했습니다 (방금 위의 방법 중 두 번째 부분을 보았습니다!) –