在以下场景中,如何确保用户在 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 中发布文章之前经过身份验证?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Forgot Password 场景中支持多语言电子邮件