0

Ionicプロジェクトでデータベースを暗号化したいのですが、暗号化なしで私は任意のデバイスにapkをインストールし、rootとしてストレージにアクセスすることができます。私はすべての私のデータとテーブルの構造を見ることができます後にsqlbrowserのような任意のSQLエディタ!soniccipherを実装してIonicプロジェクトを暗号化する方法

だから、そのために、我々は、データベースをouer暗号化する必要があり、

主な問題、SQLCipherプラグインコルドバについて多くの話が、ないtutorielやイオンのプロジェクトに実装するには、次のステップがありません、あなたは、Android上のステップを発見したことができますまたはiOS ..

これは、私たちがIonicプロジェクトのネイティブ部分にデータベースの暗号化を実装できることを意味しますか?解決策は明確ではないか、それがどのように機能するのか! NPMプラグインの

リンクenter link description here

これはテストのために私のコードです:

.factory( 'NotesDataService'、関数($ cordovaSQLite、 $ ionicPlatform){ のvarデシベル、DBNAME = " noteDemo.db」

function useWebSql() { 
    db = window.openDatabase(dbName, "1.0", "Note database", 200000) 
    console.info('Using webSql') 
} 

function useSqlLite() { 
    db = $cordovaSQLite.openDB({name: dbName}) 
    console.info('Using SQLITE') 
} 

function initDatabase(){ 
    $cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS T_NOTE (id integer primary key, title, content)') 
    .then(function(res){ 

    }, onErrorQuery) 
} 

$ionicPlatform.ready(function() { 
    if(window.cordova){ 
    useSqlLite() 
    } else { 
    useWebSql() 
    } 

    initDatabase() 
}) 

function onErrorQuery(err){ 
    console.error(err) 
} 

return { 
    createNote: function (note) { 
    return $cordovaSQLite.execute(db, 'INSERT INTO T_NOTE (title, content) VALUES(?, ?)', [note.title, note.content]) 
    }, 
    updateNote: function(note){ 
    return $cordovaSQLite.execute(db, 'UPDATE T_NOTE set title = ?, content = ? where id = ?', [note.title, note.content, note.id]) 
    }, 
    getAll: function(callback){ 
    $ionicPlatform.ready(function() { 
     $cordovaSQLite.execute(db, 'SELECT * FROM T_NOTE').then(function (results) { 
     var data = [] 

     for (i = 0, max = results.rows.length; i < max; i++) { 
      data.push(results.rows.item(i)) 
     } 

     callback(data) 
     }, onErrorQuery) 
    }) 
    }, 

    deleteNote: function(id){ 
    return $cordovaSQLite.execute(db, 'DELETE FROM T_NOTE where id = ?', [id]) 
    }, 

    getById: function(id, callback){ 
    $ionicPlatform.ready(function() { 
     $cordovaSQLite.execute(db, 'SELECT * FROM T_NOTE where id = ?', [id]).then(function (results) { 
     callback(results.rows.item(0)) 
     }) 
    }) 
    } 
}}) 

私はそのように引数を追加した場合でも、動作しませんでした。

デシベル= $ cordovaSQLite.openDB({名:DBNAME、パスワード: "secret2"})

答えて

0

ステップ1:イオンのプロジェクトにプラグインを追加します。

cordova plugin add cordova-sqlcipher-adapter 

ステップ2:sqlitePluginを追加します。

function useWebSql() { 
    db = window.sqlitePlugin.openDatabase({name: 'dbName.db', key: 'Enter key that you want', location: 'default'}); 
    //db = window.openDatabase(dbName, "1.0", "Note database", 200000) 
    console.info('Using webSql') 
} 

function useSqlLite() { 
    db = window.sqlitePlugin.openDatabase({name: 'dbName.db', key: 'Enter key that you want', location: 'default'}); 
    console.info('Using SQLITE') 
} 

function initDatabase(){ 
    //$cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS T_NOTE (id integer primary key, title, content)') 
    //.then(function(res){ 

    // }, onErrorQuery) 

    db.transaction(function(tx) { 
      tx.executeSql('CREATE TABLE IF NOT EXISTS T_NOTE (id integer primary key, title, content)',function(tx,results){},onErrorQuery); 

     }); 
} 

$ionicPlatform.ready(function() { 
    if(window.cordova){ 
    useSqlLite() 
    } else { 
    useWebSql() 
    } 

    initDatabase() 
}) 

function onErrorQuery(err){ 
    console.error(err) 
} 
関連する問題