当前位置: 首页 > 知识库问答 >
问题:

Laravel路由中间件验证[重复]

罗金林
2023-03-14

我的路线是这样的:

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

这个路由检查,如果用户是登录之前调用免费下载方法.如果不是,登录表单出现。

然后用户需要登录并且登录控制器返回家并且用户需要再次点击路线按钮('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');
    }
}

最后在这里我的免费下载方法

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();
    }
}

共有1个答案

堵琨
2023-03-14

在登录控制器中,使用预定的方法。

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

在被中间件捕获之前,它将尝试重定向到预期页面。如果找不到想要的页面,它将重定向到主页页面。

 类似资料:
  • 概览 首先同步下项目概况: 上篇文章分享了,路由中间件 - Jaeger 链路追踪(实战篇),文章反响真是出乎意料, 「Go中国」 公众号也转发了,有很多朋友加我好友交流,直呼我大神,其实我哪是什么大神,只不过在本地实践了而已,对于 Go 语言的使用,我还是个新人,在这里感谢大家的厚爱! 这篇文章咱们分享:路由中间件 - 签名验证。 为什么使用签名验证? 这个就不用多说了吧,主要是为了保证接口安全

  • 我刚刚安装了laravel 5.2,创建了auth register、login和reset password,但现在我想为我的项目创建一个索引,所有用户(也没有登录)都可以访问。我试图创造 路由::get(“/”,HomeController@home'); 但此视图仅对登录的用户启用。 我的路线 我的家庭控制器 如何创建所有用户都可以访问的视图路径? 谢谢你的帮助!

  • 是否可以将用户重定向到Laravel中的POST路由。我有两张表格。表格一发送到包含表格二的路线,表格二发送到最终路线,然后进行验证。如果

  • 当进行了路由匹配与路由参数绑定后,接下来就要进行路由闭包或者控制器的运行,在此之前,本文先介绍中间件的相关源码。 中间件的搜集 由于定义的中间件方式很灵活,所以在运行控制器或者路由闭包之前,我们需要先将在各个地方注册的所有中间件都搜集到一起,然后集中排序。 public function dispatchToRoute(Request $request) { $route = $this-

  • 我刚刚开始一个新的Laravel 5.2项目,我的路由有问题。Web中间件在路由列表中重复,我在会话和csrf方面有很多问题。 这是我的artisan路线:列表输出: 这是我的routes.php文件: 我有另一个项目与Laravel 5.2和我一切正常。 知道怎么解决吗? 谢谢

  • 我是拉威尔5号的新手,我只是想知道如何保护特定路线?我正在使用默认的身份验证中间件来保护我的路由,这只有在您登录时才可访问。所以我有这个。 如何仅保护/auth/register?不影响其他人的登录吗? 默认情况下,在我的路由组之外,我有此选项。 我只希望登录的用户访问默认的注册页面。我的登录用户都是管理员。