react-native - 身份验证流程 - 本机反应和导航往返
我一直在阅读 React Navigation 身份验证文档,但我似乎无法像示例描述的那样让我的身份验证工作 - https://reactnavigation.org/docs/auth-flow/。
问题描述
我一直在阅读 React Navigation 身份验证文档,但我似乎无法像示例描述的那样让我的身份验证工作 - https://reactnavigation.org/docs/auth-flow/。
我的身份验证中有以下代码(使用 redux)
Class App extends Component{
render(){
return (
(this.props.userId == null ? <AuthStack /> : <RootStack />)
)
}
}
我的 Redux-Logger 正在向我发送以下消息,但正如您从我的 console.log 中看到的那样,this.props.userId 以未定义的形式返回……为什么?
这是我在 auth.js(动作)文件中的动作
export const getUserId = () => {
return async dispatch => {
await AsyncStorage.getItem('userId').then(userId => {
console.log(userId)
dispatch(setUserId(userId))
// this.props.navigation.navigate(userId ? 'Main' : 'Login');
})
}
}
这是我在 auth.js (reducer) 文件中的 REDUCER
const initialState = {
userId: ''
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case SET_USERID:
return {
...state,
userId: action.payload
};
case REMOVE_USERID:
return {
...state,
userId: null
};
default:
return state;
}
};
有没有办法检查openssl是否退出而没有任何错误或检查解密是否出错?
是的,这就是你正在做的。
不幸的是,在使用像这样的低级原语时,使用错误的键并不是错误。它只是给你错误的明文。
在您的情况下,您使用 PKCS#5 填充(比较-nopad
),因此某些纯文本(~99.7%)碰巧未能通过填充检查并导致错误,但这还不足以确保密码正确。
专业系统使用Authenticated Encryption,但是对于一个玩具示例,您可以例如检查消息中的所有字符是否可打印,或者添加并检查“Secret:”标题以使正确的明文可识别。
解决方案
推荐阅读
- operating-system - 为什么存在寄存器以及它们如何与 cpu 一起工作?
- java - Spring Data-JPA 多个嵌套对象
- scala - 在线代码编辑器 Scastie 如何读取输入文件?
- swift - Swift:如何将数据从 tableview 单元格传递到按钮?
- browser-cache - 在 POST 请求中提交表单后,点击返回按钮时页面未更新
- python - 如何使用 python 从远程 Windows 服务器获取文件?
- mysql - Truncate Text using sql (all text after a DIV tag)
- android - 本机应用程序崩溃 - 获取内存地址问题 - com.android.runtime/lib64/libart.so & #00 0x00000000afef03c4
- c++ - 在 64 位架构上读取/写入 32 位数据类型
- affdex-sdk - 旧的 affdex-sdk 是否仍可免费用于学术目的?
我一直在阅读 React Navigation 身份验证文档,但我似乎无法像示例描述的那样让我的身份验证工作 - https://reactnavigation.org/docs/auth-flow/。
问题描述
我一直在阅读 React Navigation 身份验证文档,但我似乎无法像示例描述的那样让我的身份验证工作 - https://reactnavigation.org/docs/auth-flow/。
我的身份验证中有以下代码(使用 redux)
Class App extends Component{
render(){
return (
(this.props.userId == null ? <AuthStack /> : <RootStack />)
)
}
}
我的 Redux-Logger 正在向我发送以下消息,但正如您从我的 console.log 中看到的那样,this.props.userId 以未定义的形式返回……为什么?
这是我在 auth.js(动作)文件中的动作
export const getUserId = () => {
return async dispatch => {
await AsyncStorage.getItem('userId').then(userId => {
console.log(userId)
dispatch(setUserId(userId))
// this.props.navigation.navigate(userId ? 'Main' : 'Login');
})
}
}
这是我在 auth.js (reducer) 文件中的 REDUCER
const initialState = {
userId: ''
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case SET_USERID:
return {
...state,
userId: action.payload
};
case REMOVE_USERID:
return {
...state,
userId: null
};
default:
return state;
}
};
有没有办法检查openssl是否退出而没有任何错误或检查解密是否出错?
是的,这就是你正在做的。
不幸的是,在使用像这样的低级原语时,使用错误的键并不是错误。它只是给你错误的明文。
在您的情况下,您使用 PKCS#5 填充(比较-nopad
),因此某些纯文本(~99.7%)碰巧未能通过填充检查并导致错误,但这还不足以确保密码正确。
专业系统使用Authenticated Encryption,但是对于一个玩具示例,您可以例如检查消息中的所有字符是否可打印,或者添加并检查“Secret:”标题以使正确的明文可识别。
解决方案
推荐阅读
- operating-system - 为什么存在寄存器以及它们如何与 cpu 一起工作?
- java - Spring Data-JPA 多个嵌套对象
- scala - 在线代码编辑器 Scastie 如何读取输入文件?
- swift - Swift:如何将数据从 tableview 单元格传递到按钮?
- browser-cache - 在 POST 请求中提交表单后,点击返回按钮时页面未更新
- python - 如何使用 python 从远程 Windows 服务器获取文件?
- mysql - Truncate Text using sql (all text after a DIV tag)
- android - 本机应用程序崩溃 - 获取内存地址问题 - com.android.runtime/lib64/libart.so & #00 0x00000000afef03c4
- c++ - 在 64 位架构上读取/写入 32 位数据类型
- affdex-sdk - 旧的 affdex-sdk 是否仍可免费用于学术目的?