Laravel 5.2仪表板重定向循环

时间:2016-03-21 22:24:13

标签: laravel laravel-routing laravel-5.2 redirect-loop

我是laravel的新手,正在使用5.2版本。通过教程和我在网上找到的,我已经能够使用make:auth作为用户帐户。但是我有三种不同类型的用户(观众,艺术家,赞助商),这意味着每个用户必须在他们自己的桌子上并拥有自己的注册。这是一个庞大的项目,拥有大量注册用户,每个用户都有不同的选择。话虽这么说,我不能只使用一个表并创建角色,但这只是一个项目的大项目。

我创建了三个登录系统中的两个。我遇到的问题是,在艺术家登录并发送到艺术家仪表板后,我得到了:太多的重定向“错误。网址指向正确的信息中心,但页面不显示。任何帮助将非常感激。

routes.php文件

Route::group(['middleware' => ['web']], function () {

Route::get('/', function () {
return view('welcome');
});
Route::get('/artist', function () {
return view('artist');

});
    Route::get('/sponsor', function () {
return view('sponsor');

});
    Route::get('/viewer', function () {
return view('viewer');

});
    Route::get('/contact', function () {
return view('contact');

});

        Route::get('/ArtistRegistration', function () {
return view('ArtistRegistration');

});

Route::get('/artdashboard', function () { 'passwords' => [
    'users' => [
        'provider' => 'users',
        'email' => 'auth.emails.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
      'artist' => [
    'provider' => 'artist',
    'email' => 'auth.emails.password',
    'table' => 'password_resets',
    'expire' => 60,
],
],

];

    return view('artdashboard');
});

Route::post('/signup', [
    'uses' => 'UserController@postSignup',
    'as' => 'signup'
]);

Route::post('/signin', [
    'uses' => 'UserController@postSignin',
    'as' => 'signin'
]);

Route::get('/dashboard', [
    'uses' => 'UserController@getDashboard',
    'as' => 'dashboard',
    'middleware' => 'auth'
]);

//Route::group(['middleware' => ['artist']], function () {

Route::post('/signupart', [
    'uses' => 'ArtistController@postSignupArt',
    'as' => 'signupart'
]);

Route::post('/signinart', [
    'middleware' => 'artist',
    'uses' => 'ArtistController@postSigninArt',
    'as' => 'signinart'
]);
Route::group(['middleware' => 'artist', 'as' => 'artdashboard'],     function() {
    Route::get('artdashboard', 'ArtistController@getArtDashboard');
});
//Route::get('/artdashboard', [
//'uses' => 'ArtistController@getArtDashboard',
//'as' => 'artdashboard',
//'middleware' => 'artist'
  // ]);

Auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],

    //For Artists
    'artist' => [
        'driver' => 'session',
        'provider' => 'artist',
        //'table' => 'artists',
  ],
  ],
 'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    //for Artists
        'artist' => [
            'driver' => 'eloquent',
            'model' => App\Artist::class,
             'table' => 'artists',
     ],
   ],

Artist.php

   <?php 

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;

class artist extends Model implements Authenticatable
{
    //protected $table = 'artists';
    use \Illuminate\Auth\Authenticatable;
}

ArtistController.php

<?php

namespace App\Http\Controllers;

use App\Artist;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;


Class ArtistController extends Controller
{
    //public function __construct()
    //{
        //$this->middleware('artist');
    //}

    public function getArtDashboard()
    {
        return view('artdashboard');
    }

    public function postSignupArt(Request $request)
    {
        $this->validate($request, [
            'userName' => 'required|min:4',
            'userEmail' => 'required|email|unique:artists',
            'userPass' => 'required|min:3',
            'first_name' => 'required|max:120',
            'last_name' => 'required|max:120',
            'zip' => 'required|max:5',
        ]);

        $userName = $request['userName'];
        $userEmail = $request['userEmail'];
        $userPass = bcrypt($request['userPass']);
        $first_name = $request['first_name'];
        $last_name = $request['last_name'];
        $zip = $request['zip'];


        $artist = new Artist();
        $artist->userName = $userName;
        $artist->userEmail = $userEmail;
        $artist->userPass = $userPass;
        $artist->first_name = $first_name;
        $artist->last_name = $last_name;
        $artist->zip = $zip;

        $artist->save();

        Auth::login($artist);

        return redirect()->route('/artdashboard');
    }

    public function postSigninArt(Request $request)
    {
        $this->validate($request, [
            'userEmail' => 'required',
            'userPass' => 'required'
        ]);

        //if (Auth::guard('artist')->attempt($credentials)) {
        if (Auth::guard('artist')->attempt(['userEmail' => $request['userEmail'], 'userPass' => $request['userPass']])) {
            return redirect()->route('artdashboard');
        }
            return redirect()->back();
    }

}

中间件\ ArtistAuthenticate

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class ArtistAuthenticate
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = 'artist')
    {

        //if ($this->auth->check())
        //{
            //return new RedirectResponse(url('/artdashboard'));
        //}
            //return $next($request);
    //}
//}
        if (Auth::guard($guard)->guest()) {
         //if ($this->middleware('guest', ['only'=>['artist', 'viewer', 'sponsor', 'welcome', 'contacts']])
          if ($request->ajax() || $request->wantsJson()) {
             return response('Unauthorized.', 401);
            }//else{
                return redirect()->route('artdashboard');
           // }
        }

        return $next($request);
    }
}

Kernal.php

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'artist' => \App\Http\Middleware\RedirectifAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        //'artist' => \App\Http\Middleware\ArtistAuthenticate::class,
        'guest' => \App\Http\Middleware\RedirectifNotArtist::class,
    ];

0 个答案:

没有答案