我希望能够限制用户只能在我的laravel项目中查看自己的个人资料。因此,当用户想要访问他们的个人资料时,他们会转到网址,然后是/ userprofile / {id}。但截至目前,任何用户都可以输入其他用户的特定ID并访问其个人资料。因此,如果我以第一个注册用户身份登录,我的ID为1.但我只想访问我的个人资料。如果我尝试在网址中键入id 2或3,我希望它将我带回主页。知道我怎么能做到这一点?或许使用某种中间件?
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use DB;
use App\User;
use App\Salutation;
use App\Http\Requests\UserRequest;
use Auth;
class HomeController extends Controller
{
public function index(){
$users_info = User::all();
return view('userprofile.index', compact("users_info"));
}
public function show($user_info){
$user_info = User::find($user_info);
return view('userprofile.show', compact("user_info"));
}
public function create(){
return view('userprofile.create');
}
public function store(UserRequest $request){
$formData = $request->all();
User::create($formData);
return redirect('userprofile');
}
public function edit($user_info) {
$user_info = User::findOrFail($user_info);
return view('userprofile.edit', compact("user_info"));
}
public function update(UserRequest $request, $user_info){
$formData = $request->all();
$user_info = User::findOrFail($user_info);
$user_info->update($formData);
return redirect('userprofile');
}
public function __construct(){
$this->middleware('auth', ['only' =>['create', 'edit',
'destroy']]);
}
}
答案 0 :(得分:1)
只是将当前用户与param id进行比较
示例:
public function getProfile(Request $request, $id)
{
if(Auth::id() == $id) {
// valid user
$user_info = Auth::user();
return view('userprofile.show', compact("user_info"));
} else {
//not allowed
}
}