在以下场景中,如何确保用户在 Laravel 中发布文章之前经过身份验证?

Posted

技术标签:

【中文标题】在以下场景中,如何确保用户在 Laravel 中发布文章之前经过身份验证?【英文标题】:How to ensure user is authenticated before he publishes an article in Laravel in the below scenario? 【发布时间】:2015-11-09 06:55:13 【问题描述】:

我正在 Laravel 5.1 中开发一个简单的网络博客应用程序。该应用程序包含两个控制器,一个UsersController 和一个ArticlesController

UsersController里面有authenticate()check()验证用户是否被授权进行操作的函数,store()update()等与文章相关的功能在@ 987654328@.

我应该如何从ArticlesController 调用authenticate()check() 函数,然后说store() 将一篇文章写入数据库?

【问题讨论】:

你知道 request authorize() 方法吗,也许你应该使用它。 【参考方案1】:

Laravel 使用中间件,你需要在你的控制器中放置这个

public function __construct()
    $this->middleware('auth'); //Requires auth


在你的路由中,你需要像这样在你需要的控制器中添加使用中间件的代码

Route::group(['middleware' => 'auth'], function () 
    Route::get('/', function ()    
        // Uses Auth Middleware
    );

    Route::get('user/profile', function () 
        // Uses Auth Middleware
    );
);

阅读Laravel关于中间件的文档你可以创建更多的中间件http://laravel.com/docs/master/middleware

【讨论】:

【参考方案2】:

您的问题不是很清楚,但我想您想在存储文章之前检查用户是否经过身份验证。有很多方法可以做到:

    在您的ArticleController 的路由规则中设置middleware。 使用“标准”Auth 类检查 store 方法中的身份验证。

例子:

function store()

    if (Auth::check())
    
        // The user is logged in...
    

【讨论】:

以上是关于在以下场景中,如何确保用户在 Laravel 中发布文章之前经过身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在多个会话中保存有关用户的信息

如何在 AWS Forgot Password 场景中支持多语言电子邮件

如何单击按钮并打开窗口以在c#中发送电子邮件

如何首先在Firebase中发送电子邮件验证,然后创建帐户?

如何在 VC++ 中发送电子邮件?

Laravel5.1 事件--Event