【问题标题】:Laravel Route middleware Auth [duplicate]Laravel Route 中间件身份验证 [重复]
【发布时间】:2019-06-12 11:36:27
【问题描述】:

我做了一条这样的路线:

Route::get('free-download/{product}' , 'ProductController@freeDownload')->name('product.free')->middleware('auth');

此路由在调用 freeDownload 方法之前检查用户是否已登录。如果没有,就会出现登录表单。

然后用户需要登录,登录控制器返回主页,用户需要再次单击按钮路由('product.free')才能访问路由名称“product.free”。

有一种方法可以调用 ProductController@freeDownload 方法 如果用户在之前点击了按钮,则在登录后?

希望我或多或少清楚。

这里是我的登录控制器:

    class LoginController extends Controller
{
    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/';

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

我的 freeDownload 方法终于来了

public function freeDownload(Product $product){

    $user_download = UserDownload::where('user_id' , auth()->user()->id)->where('product_id' , $product->id)->exists();

    if(!$user_download && $product->file){

        $user_download = new UserDownload();
        $user_download->user_id = auth()->user()->id;
        $user_download->product_id = $product->id;
        $user_download->save();

        $product->downloads = $product->downloads + 1;
        $product->save();

        return Storage::disk('s3')->download($product->file);

    }else{

        Alert::error('Download error', 'file not found');
        return back();
    }
}

【问题讨论】:

    标签: laravel


    【解决方案1】:

    在登录控制器中使用intended 方法。

    public function login(Request $request)
    {
        if ($this->guard()->attempt(...)) {
            return redirect()->intended(route('home'));
        } else {...}
    }
    

    它会在被中间件捕获之前尝试重定向到预期的页面。如果找不到目标页面,它会重定向到home 页面。

    【讨论】:

    • 感谢您的回复,只有当我在登录前请求路由时,此方法才会将我重定向到路由“product.free”?我应该尝试什么?
    • 是的,attempt 是您放置凭据以登录用户的位置。检查您当前的 AuthController
    • 它不工作它把我带回家但不是路由('product.free')。顺便说一句,按钮在我的主页视图中。我没有提到这个。
    猜你喜欢
    • 2019-03-15
    • 2021-01-21
    • 2017-02-26
    • 2018-07-25
    • 2018-09-21
    • 1970-01-01
    • 2018-07-21
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多