我正在使用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>
但是,在我看来,它们都不是传递此类数据的安全方法。谁能告诉我他对此的看法,或者提供更好的解决方案? 非常感谢。
答案 0 :(得分:0)
我将创建一个Class来仅向用户展示我需要在前端显示的重要信息。
因此,您无需将auth->user()
传递到前面,而是可以将其注入decorator
并使用您希望显示的方法生成simpler user class
。
答案 1 :(得分:0)
非常感谢我找到了Laravel内置的API TOKEN实现的解决方案。另外,我在注销后销毁令牌并在登录时重新创建令牌,因此如果他未登录
,则没人可以将其与其他服务一起使用来收集数据