Armazenamento Seguro para React Native (Android & iOS)
Obs: Esse pacote é uma versão melhorada de react-native-secure-key-store, RNSecureStorage possui suporte para "abaixo da api 23"
Veja o FAQ para mais informações.
RNSecureStorage usa o Keychain para o armazenamento seguro.
Abaixo da API 23 RNSecureStorage usa secure-preferences by @scottyab
Acima da API 23 RNSecureStorage usa Android Keystore
Com o NPM
npm install --save rn-secure-storage
Com o YARN
yarn add rn-secure-storage
Link Automático
react-native link rn-secure-storage
Link Manual
Instalação Manual (Se algo der errado com o link doreact-native)
import RNSecureStorage, { ACCESSIBLE } from 'rn-secure-storage'
SET
// {accessible: ACCESSIBLE.WHEN_UNLOCKED} -> Para IOS
RNSecureStorage.set("key1", "this is a value", {accessible: ACCESSIBLE.WHEN_UNLOCKED})
.then((res) => {
console.log(res);
}, (err) => {
console.log(err);
});
GET
RNSecureStorage.get("key1").then((value) => {
console.log(value) // Retorna um valor direto
}).catch((err) => {
console.log(err)
})
REMOVE
RNSecureStorage.remove("key1").then((val) => {
console.log(val)
}).catch((err) => {
console.log(err)
});
Chave | Plataforma | Descrição | Padrão |
---|---|---|---|
accessible |
apenasiOS | Diz quando um item da keychain é acessível, veja os valores possiveis em Keychain.ACCESSIBLE . |
Keychain.ACCESSIBLE.WHEN_UNLOCKED |
Chave | Descrição |
---|---|
WHEN_UNLOCKED |
O dado no item da keychain pode ser acessado apenas enquanto o dispositivo é desbloqueado pelo usuário. |
AFTER_FIRST_UNLOCK |
O dado no item da keychain não pode ser acessado depois de reiniciar até que o dispositivo seja desbloqueado pelo menos uma vez pelo usuário. |
ALWAYS |
O dado no item da keychain pode sempre ser acessado, independente do dispositivo estar desbloqueado ou não. |
WHEN_PASSCODE_SET_THIS_DEVICE_ONLY |
O dado no item da keychain pode ser acessado apenas quando o dispositivo é desbloqueado. Disponível apenas se uma senha é inserida no dispositivo. Itens com esse atributo não podem migrar para outro dispositivo. |
WHEN_UNLOCKED_THIS_DEVICE_ONLY |
O dado no item da keychain pode ser acessado apenas enquanto o dispositivo é desbloqueado pelo usuário. Itens com esse atributo não podem migrar para outro dispositivo. |
AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY |
O dado no item da keychain não pode ser acessado depois de reiniciar até que o dispositivo seja desbloqueado pelo menos uma vez pelo usuário. Itens com esse atributo não podem migrar para outro dispositivo. |
ALWAYS_THIS_DEVICE_ONLY |
O dado no item da keychain pode sempre ser acessado, independente do dispositivo estar desbloqueado ou não. Itens com esse atributo não podem migrar para outro dispositivo. |
Você pode encontrar exemplos de uso do pacote na pasta example
.
git clone https://github.com/talut/rn-secure-package
cd rn-secure-package/example
npm install
react-native run-ios/android
- Valores/mensagens de retorno para Android & IOS foram atualizados.
- Issue:1 resolvido.
- Por que eu deveria usar esse pacote?
- Você pode usar outros pacotes como o
react-native-keychain
. Eu sei que este pacote possui mais opções. Mas você pode armazenar apenas nome de usuário e senha, enquanto que com o RNSecureStorage você pode guardar inúmeros itens de [chave,valor] - Porque você não deveria usar o react-native-secure-key-store
- Você pode usar esse pacote mas você não pode ter nenhuma boa solução com as APIs mais baixas do android. E ainda por cima esse pacote é configurado como minSDK:18. Isso significa que você terá alguns problemas.
- Ei, eu posso confiar no seu code/package?
- Você pode ver meu código no repositório, então você pode avaliá-lo. E se quiser você também pode fazer um fork e alterar o quê lhe incomoda. Esse pacote possui Licença MIT, então não posso te dar nenhuma garantia. Mas esteja dito que eu utilizo esse pacote nos meus projetos.
- Você vai manter esse pacote?
- Pretendo. Mas claro, as coisas podem mudar com o tempo. -Como eu posso te dar apoio? -Se você está usando meu pacote isso já é o suficiente para mim.
Esse projeto possui Licença MIT - veja o arquivo LICENSE.md para mais detalhes