У меня возникли проблемы с пониманием лучшего способа выхода пользователя из системы, например, через 5 минут или x период бездействия.Я видел много хакерских решений и пакетов npm, но я бы предпочел сделать это правильно и эффективно, не добавляя никаких дополнительных пакетов.
Вот некоторые из связанных зависимостей, которые я использую в package.json
:
"aws-amplify": "^1.1.6",
"aws-amplify-react": "^2.0.5",
"aws-amplify-react-native": "^2.0.1",
"expo": "^30.0.0",
"react-native": "^0.55.0",
"react-navigation": "^2.13.0",
"react-redux": "^5.0.7",
"redux": "^4.0.0",
"redux-promise": "^0.6.0"
Вот мой App.js
файл:
import React, { Component } from 'react'
import { Provider } from 'react-redux'
import { createStore, applyMiddleware } from 'redux'
import { Font, Asset, AppLoading } from 'expo'
import ReduxPromise from 'redux-promise'
import Amplify from 'aws-amplify'
import AppNavigator from './AppNavigator'
import reducers from './src/reducers'
import awsExports from './src/aws-exports'
Amplify.configure(awsExports)
const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore);
class App extends Component {
constructor(props) {
super(props)
this.state = {
fontLoaded: false,
isReady: false,
}
}
async componentDidMount() {
await Font.loadAsync({
'NunitoSans-Bold': require('./src/assets/fonts/NunitoSans-Bold.ttf'),
'NunitoSans-Regular': require('./src/assets/fonts/NunitoSans-Regular.ttf'),
'NunitoSans-SemiBold': require('./src/assets/fonts/NunitoSans-SemiBold.ttf'),
})
this.setState({ fontLoaded: true })
}
cacheResourcesAsync = async () => {
const images = [
require('./assets/fav.png'),
require('./assets/splash.png'),
]
const cacheImages = images.map(image => ( Asset.fromModule(image).downloadAsync()))
return Promise.all(cacheImages)
}
render() {
const store = createStoreWithMiddleware(reducers)
return (
this.state.fontLoaded && this.state.isReady ? (
<Provider store={ store }>
<AppNavigator />
</Provider>
) : (
<AppLoading
startAsync={ this.cacheResourcesAsync }
onFinish={ () => this.setState({ isReady: true }) }
onError={ console.warn }
/>
)
)
}
}
export default App
В настройках учетной записи, У меня есть успешная функция выхода из системы, которую я хотел бы использовать после выхода пользователя из системы.
handleSignOut = () => {
cognitoSignOut()
.then(() => {
AsyncStorage.clear()
this.navigate('Auth')
})
.catch(err => this.setState({ errorMessage: err.message }))
}
Полагаю, самая большая путаница для меня заключается в том, что в Amplify есть все виды документации о том, как сохранить пользователя в системе и как обновить токен, но не так много, чтобы заставить токен истечь.
Мне бы очень хотелось получить любую помощь!Заранее спасибо.:)