溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQLite 編譯期授權(quán)回調(diào)Compile-Time Aut

發(fā)布時(shí)間:2020-06-19 20:59:08 來源:網(wǎng)絡(luò) 閱讀:178 作者:fengyuzaitu 欄目:數(shù)據(jù)庫

原文:https://www.sqlite.org/c3ref/set_authorizer.html

?
int sqlite3_set_authorizer(
?sqlite3*,
? int(*xAuth)(void*,int,const char*,const char*,const char*,const char*),
?void *pUserData
);
該函數(shù)將注冊(cè)一個(gè)授權(quán)的回調(diào)函數(shù)到一個(gè)指定的數(shù)據(jù)庫句柄,第一個(gè)參數(shù)指定了數(shù)據(jù)庫句柄。當(dāng)SQL 語句被sqlite3_prepare或者她的變體sqlite3_prepare_v2,sqlite3_prepare16,sqlite3_prepare166_v2等函數(shù)編譯的時(shí)候,就會(huì)調(diào)用該回調(diào)函數(shù)。在不同的編譯點(diǎn)上,執(zhí)行不同的操作,授權(quán)回調(diào)函數(shù)將被執(zhí)行,并且返回當(dāng)前的操作是否合法(At various points during the compilation process,as logic is beingcreated to perform various actions ,the authorizer callback is invoked to seeif those actions are allowed).如果回調(diào)函數(shù)返回SQLITE_OK,表示允許執(zhí)行該操作,SQLITE_IGNORE表示不允許該指定的操作,但是允許編譯,SQLITE_DENY將會(huì)返回一個(gè)錯(cuò)誤,并且拒絕該操作的執(zhí)行。如果回調(diào)函數(shù)返回其他的值,而不是上面三種類型的其中一種,sqlite3_prepare_v2函數(shù)將會(huì)觸發(fā)一個(gè)錯(cuò)誤信息(then the sqlite3_prepare_v2() or equivalent call that triggered theauthorizer will fail with an error message.)


SQLITE_OK 允許SQL執(zhí)行
SQLITE_DENY 拒絕SQL執(zhí)行
SQLITE_IGNORE 允許SQL執(zhí)行,但是嘗試讀取記錄集會(huì)返回NULL,嘗試寫入記錄集會(huì)被忽略

授權(quán)回調(diào)函數(shù)的第一個(gè)參數(shù),將會(huì)由sqlite3_set_authorizer的第三個(gè)函數(shù)設(shè)置進(jìn)去。第二個(gè)函數(shù)是一個(gè)整型的操作碼,指定了哪些操作是被允許的。第三到第六個(gè)參數(shù)是一個(gè)以零為結(jié)束符的字符串,這三個(gè)參數(shù)包含了哪些額外的操作細(xì)節(jié)是被授權(quán)允許的。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI