我正在建立一个用户登录的网站。如果您的角色为admin
(路由位于admin
中间件后面),则登录表单现在会指向管理面板,如果您的角色为user
,则会返回主页。返回主页,您可以查看个人资料页面并添加产品(位于auth
中间件之后)。
我的问题是形成路线的最佳方法是什么?
如果我进行site.com/user/{id}
路由,则会向每个登录的用户公开用户ID,以及使用site.com/user/{id}/product/{product_id}
编辑产品。
我在这里看到了一些安全问题,我想知道一个更好的解决方案是否正在制作site.com/profile
路由,而控制器又需要Auth::user()
不会在流程中暴露ID?
答案 0 :(得分:1)
添加没有ID的路线并使用Auth::user()
这是最佳做法,让您的路线更简单
Public function profile(){
$user = Auth::user();
return view('profile', compact('user');
}
上面的代码比这更简单:
Public function profile($id){
$user = User::find($id);
//prevent authenticated from viewing other users
if($user == Auth::user()){
return view('profile', compact('user');
}else{
//return something else
}
}
答案 1 :(得分:0)
如果您担心公开用户ID,可以尝试使用hashids之类的内容,其中ID将被编码。
答案 2 :(得分:0)
你走了:
使用id
product_id
和base64_encode()
进行编码
示例通过id
编码传递了网址中的product_id
和base64_encode()
当你想使用它时,请使用如下:
Route::get('user/{id}/product/{product_id}', function($code){
$id = base64_decode($id);
$product_id = base64_decode($product_id);
});