如何在laravel

时间:2018-03-07 11:10:50

标签: laravel-5.1

                                        Laravel 5.1

我正在尝试为控制器中的每个方法构建此功能。这是非常不切实际的,也很难维护。如何在我在特定路由中注册auth中间件时设置此项,然后它将重定向到登录页面以及尝试查看/访问的URL。

示例
网址:public/users

如果此网址会尝试由未经身份验证的用户访问,则该用户将被重定向到public/login?url=http://localhost/myproject/public/users

这样的网址

然后用户成功登录后,用户将被重定向到http://localhost/myproject/public/users

我现在拥有的东西: (但我认为不是一个好用的)

public function getLoginURL(){
    if(!Input::get('location-login')){
        // URL is not set, redirect user to home.
        return redirect('/');
    }

    if(auth()->check()){
        // User is logged in. Go the specified URL (depends on the middleware of the url (route))
        return redirect()->to(Input::get('location-login'));
    }

    if(!auth()->check()){
        // Redirect user to a login with the URL provided
        return view('pages::auth.login.url');
    }
}

2 个答案:

答案 0 :(得分:0)

您可以在中间件中使用下一个方法...无需发送网址

public function handle($request, Closure $next)
{
    if (Auth::user()) {
        return $next($request);
    }
    return redirect('/login');
}

答案 1 :(得分:0)

  

AuthController

中使用此功能

    

namespace App\Http\Controllers;

use Auth;
use Illuminate\Routing\Controller;

class AuthController extends Controller
{
    /**
     * Handle an authentication attempt.
     *
     * @return Response
     */
    public function authenticate()
    {
        if (Auth::attempt(['email' => $email, 'password' => $password])) {
            // Authentication passed...
            return redirect()->intended('dashboard');
        }
    }
}

intended()功能会将您重定向到您想要的位置。 请查看Intended redirect

的详细信息