Laravel限制用户只能看到自己的个人资料

时间:2018-04-21 00:05:58

标签: php laravel authentication

我希望能够限制用户只能在我的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']]);
    }
}

1 个答案:

答案 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
     }
}
相关问题