我正在使用react-router(v2.8.1)和ES6语法编写React .js应用程序(v15.3).我无法获取路由器代码来拦截页面之间的所有转换,以检查用户是否需要先登录.
我的顶级渲染方法非常简单(应用程序也很简单):
render()
{
return (
<Router history={hashHistory}>
<Route path="/" component={AppMain}>
<Route path="login" component={Login}/>
<Route path="logout" component={Logout}/>
<Route path="subject" component={SubjectPanel}/>
<Route path="all" component={NotesPanel}/>
</Route>
</Router>
);
}
Run Code Online (Sandbox Code Playgroud)
Web上的所有示例都使用ES5代码或旧版本的react-router(早于版本2),而我对mixins(已弃用)和willTransitionTo(从未被调用)的各种尝试都失败了.
如何设置全局"拦截器功能"以强制用户在登陆他们请求的页面之前进行身份验证?
我需要参数化我的水壶作业和转换中的所有变量(作业将在 AWS 中运行,所有参数都作为环境变量传入)。
我的连接、路径和作业中的各种其他参数及其伴随的转换使用 ${SOURCE_DB_PASSWORD}、${OUTPUT_DIRECTORY} 样式。
当我在数据集成 UI 中将这些设置为环境变量时,它们都可以在 UI 工具中正常工作并且作业运行成功。当我从 bash 脚本运行它们时:
#!/bin/sh
export SOURCE_DB_HOST=services.db.dev
export SOURCE_DB_PORT=3306
kitchen.sh -param:SOURCE_DB_PORT=$SOURCE_DB_PORT -param:SOURCE_DB_HOST=$SOURCE_DB_HOST -file MY_JOB.kjb
Run Code Online (Sandbox Code Playgroud)
作业及其调用的转换不会获取变量。错误是:
Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "${SOURCE_DB_PORT}"'
Run Code Online (Sandbox Code Playgroud)
因此,在不使用 jndi 文件或 Kettle.properties 的情况下,我需要某种方法将环境变量映射到 PDI 作业和转换中的参数/变量。
[Mac OS X 10.13 上的 PDI 版本 8.1]