我在登录组件中设置 axios.defaults.headers.Authorization = MY_TOKEN,该组件在 Authentication 组件中呈现,该组件检查 this.state.loggedin 是否设置为 true。如果为 false,则呈现 Login 组件,如果为 true,则呈现带有 BrowserRouter 的 UserComponent。BrowserRouter 读取“/”路径并导航到 Documents 组件。在此导航页面刷新期间,axios.defaults.headers.Authorization 被清除,返回值未定义。即使页面被刷新,我如何保留 axios.defaults.headers 或者我应该在每次路由器导航到其他组件时初始化默认标头?
更新
添加了一些代码如何在 Authentication.js 中进行渲染
render() {
return (
<UserNavigationContainer
{...this.props}
logout={this.onClickLogoutHandler}
/>
);
}
Run Code Online (Sandbox Code Playgroud)
UserNavigationContainer.js 渲染路由(非完整代码)
<BrowserRouter>
<div>
<UserNavigationComponent {...this.props}>
<Switch>
<Route
exact
path="/"
component={UserSubmittedDocumentsContainer}
/>
Run Code Online (Sandbox Code Playgroud)
所以实际上当 UserNavigationContainer 被渲染时,它导航到“/”并在导航时刷新页面。
目前我正在使用放置在带有变量的 react app 根文件夹中的 .env 文件
REACT_APP_BASE_URL = http://localhost:8081
我用户 axios 默认为 api 请求设置 base url
axios.defaults.baseUrl = process.env.REACT_APP_BASEURL
构建 React App .env 文件后不考虑,如果我更改了我的基本 URL,我如何在不重新构建整个 React 应用程序的情况下做到这一点。我想让基本 url 独立,所以我可以动态更改基本 url。什么是最好的解决方案?
我有一个 XML 文件,其中存储了国家/地区。每个国家/地区元素都具有区域、次区域、国家/地区代码等属性。我的服务应该解析 XML 并根据提供的国家/地区名称获取区域。有没有什么方法可以将 xml 中的数据加载到内存中并使用,这样我就不需要每次想要获取国家/地区的区域时都解析 XML?我不想使用枚举,因为我想要可更新的 xml 列表,该列表仅在应用程序启动时或第一次使用我的服务时解析一次。因此,在 XML 更新之后,服务器重新启动就足够了,无需重建应用程序来更新枚举。如何才能实现这一目标?
我被告知以下查询是不安全的,因为来自前端输入字段的参数:searchFor可用于 SQL 注入。请建议在下面的代码中防止 SQL 注入的最佳解决方案是什么?
@Query("SELECT u FROM User u WHERE lower(u.username) LIKE %:searchFor% " +
" OR lower(concat(u.firstname, ' ', u.lastname)) LIKE %:searchFor% " +
" OR lower(u.email) LIKE %:searchFor%")
Page<User> findAllAndSearch(@Param(value = "searchFor") String searchFor, Pageable pageable);
Run Code Online (Sandbox Code Playgroud)
我没有使用“+”来连接字符串,而是提供参数(:searchFor)。不确定这是否仍然不安全。