注册后的Laravel更改/家庭路线

时间:2015-10-02 12:33:37

标签: laravel-5.1

我实施了电子邮件激活功能,但我遇到了一些问题。如果我在注册localhost:8000/activate/tokenvariable后打开激活链接,它会将我重定向到/ home url并发出错误。但是,如果我删除cookie并访问它,帐户正在被激活而没有问题。

我无法理解问题所在。

  

RouteCollection.php第161行中的NotFoundHttpException:

路线

// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');

// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');

// Password reset link request routes...
Route::get('password/email', 'Auth\PasswordController@getEmail');
Route::post('password/email', 'Auth\PasswordController@postEmail');

// Password reset routes...
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');

Route::get('activate/{token}', 'Auth\PasswordController@activate');

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


Route::get('feed', 'Feed\FeedController@index');

FeedController

namespace App\Http\Controllers\Feed;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class FeedController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('feed');
    }
}

PasswordController

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Eloquent;
use Models;
use App\Models\User;
use Auth;
use Session;

class PasswordController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Password Reset Controller
    |--------------------------------------------------------------------------
    |
    | This controller is responsible for handling password reset requests
    | and uses a simple trait to include this behavior. You're free to
    | explore this trait and override any methods you wish to tweak.
    |
    */

    use ResetsPasswords;

    /**
     * Create a new password controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    public function activate($token) {
        //get token value.
        // find the user that belongs to that token.
        $activation = User::where("confirmation_code", $token)->get()->first();
        $activation->confirmed = 1;
        $activation->save();
        Auth::loginUsingId($activation->id, true);

    }
}

AuthController

namespace App\Http\Controllers\Auth;

use App\Models\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Mail;
use Auth;

class AuthController extends Controller
{

    protected $redirectTo = '/feed';
    protected $loginPath = '/';
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make(
          $data,
          [
            'name'     => 'required|max:255',
            'email'    => 'required|email|max:255|unique:users',
            'password' => 'required|confirmed|min:6',
          ]
        );
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array $data
     * @return User
     */
    protected function create(array $data)
    {
        $confirmation_code = md5(uniqid(mt_rand(), true));
        $email = $data['email'];

        Mail::send('emails.verify', ['confirmation_code' => $confirmation_code], function ($m) use ($email) {
            $m->to($email)->subject("Here's your email");
        });

        return User::create(
          [
            'name'              => $data['name'],
            'email'             => $data['email'],
            'password'          => bcrypt($data['password']),
            'confirmation_code' => $confirmation_code,
          ]
        );
    }
}

1 个答案:

答案 0 :(得分:1)

我在RedirectIfAuthenticated.php文件中更改了handle function的重定向url,它已经解决了。

这是一个例子。

public function handle($request, Closure $next)
    {
        if ($this->auth->check()) {
            return redirect('/feed');
        }

        return $next($request);
    }