使用React将授权用户从Laravel后端传递到前端的最安全方法

时间:2018-11-20 16:51:28

标签: php reactjs laravel redux

我正在使用laravel(几乎完成)构建一个天气应用,我决定使用react / redux / react-router实现前端,并使用api调用中的laravel。我唯一决定保留的是带有路由和视图的自定义laravel auth实现。但是,我很难找到一种安全的方法来登录后通过Auth :: user对象来存储在redux上。我有2个选择:

1)登录后且呈现主jsx之前,向特定路由发出axios请求,以返回Auth :: user像:

在routes.php中

Route::post('/auth/user' ,function(){
   return response()->json(['user'=>auth()->user()]);
})->middleware('auth');

在js

axios.post('/auth/user').then((res)=>{console.log(res.data.user)}).catch((e)=>{console.log(e)})

2)用刀片传递Auth :: user,用getAttribute捕获它,将其保存到redux并立即从DOM中删除:

<div id="app" data-usr="{{ auth()->user() }}"></div>

但是,在我看来,它们都不是传递此类数据的安全方法。谁能告诉我他对此的看法,或者提供更好的解决方案? 非常感谢。

2 个答案:

答案 0 :(得分:0)

我将创建一个Class来仅向用户展示我需要在前端显示的重要信息。

因此,您无需将auth->user()传递到前面,而是可以将其注入decorator并使用您希望显示的方法生成simpler user class

答案 1 :(得分:0)

非常感谢我找到了Laravel内置的API TOKEN实现的解决方案。另外,我在注销后销毁令牌并在登录时重新创建令牌,因此如果他未登录

,则没人可以将其与其他服务一起使用来收集数据