Laravel新手在这里(显然:D)。我已经建立了一个新的模型&名为Pages
的模型的控制器。
每个User
都有很多Pages
。
每个Page
都有一个User
。
我创建了以下正常运行的控制器操作(& views):
PagesController::index
PagesController::create
PagesController::store
PagesController::show
PagesController::edit
PagesController::delete
因此,您可以转到Page
来修改url.dev/pages/{id}/edit
。
问题是,无论会话状态如何,您都可以访问所有这些路由。因此,随机用户可以编辑任何给定的Page
。显然,这很糟糕。
任何人都可以指出我应该阅读的方向,根据用户是否登录来限制访问模型控制器操作的能力(如果正确的话) 用户,完全没有?
答案 0 :(得分:1)
你正在寻找中间件.. 您可以阅读更多here
<?php
function working(){
echo 'WORKED ';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dice Game</title>
</head>
<body>
<div>
<div>
<h1 id="player1" onclick="document.write('<?php working(); ?>')">
ENTER PLAYER 1 NAME
</h1>
</div>
</div>
</body>
</html>
答案 1 :(得分:1)
要强制特定路由只能由经过身份验证的用户访问,您可以在控制器构造函数中指定中间件身份验证,如下所示:
public function __construct()
{
$this->middleware('auth')->only('index');
$this->middleware('admin')->except('store');
}
您还可以使用public function __construct()
{
$this->middleware('auth');
}
或only
参数限制要在控制器中应用auth的方法。只使用你可以做到:
except
答案 2 :(得分:0)
其他答案都很好,但我更喜欢在路线组上使用中间件。
所以当我有几条这样的路线时:
Route::get('pages', 'PagesController@index')->name('pages.index');
Route::get('pages/{id}/edit', 'PagesController@edit')->name('pages.edit');
我会将它们添加到Laravel Route组中。像这样:
Route::group(['middleware' => 'auth'], function() {
Route::get('pages', 'PagesController@index')->name('pages.index');
Route::get('pages/{id}/edit', 'PagesController@edit')->name('pages.edit');
});