Android Webview中支持HttpAuth

HttpAuth是什么

  • HttpAuth是比較早的http的驗(yàn)證的一個方案
  • 認(rèn)證過程通過http協(xié)議來完成

WebView如何支持

  • HttpAuth本身是Http協(xié)議來支持挺份,在Http的頭有標(biāo)記
  • WebView會有回調(diào)來方便客戶端自己來自定義實(shí)現(xiàn)彈出框
  • WebView的內(nèi)部類WebViewClient中的回調(diào)方法onReceivedHttpAuthRequest

WebView端實(shí)現(xiàn)

  • 實(shí)現(xiàn)1裹粤,從url中根據(jù)規(guī)則獲取用戶名密碼袱贮,自動填充卓舵,進(jìn)行驗(yàn)證
  • url中沒有用戶名密碼睦疫,實(shí)現(xiàn)彈窗,用戶輸入用戶名密碼后透绩,根據(jù)填充內(nèi)容進(jìn)行驗(yàn)證
 @Override
        public void onReceivedHttpAuthRequest(WebView view,
                                              final HttpAuthHandler handler, final String host,
                                              final String realm) {
            String username = null;
            String password = null;

            boolean reuseHttpAuthUsernamePassword = handler
                    .useHttpAuthUsernamePassword();

            if (reuseHttpAuthUsernamePassword && view != null) {
                String[] credentials = view.getHttpAuthUsernamePassword(host,
                        realm);
                if (credentials != null && credentials.length == 2) {
                    username = credentials[0];
                    password = credentials[1];
                }
            }

            if (username != null && password != null) {
                handler.proceed(username, password);
            } else {
                if (isActive()) {
                    showHttpAuthentication(handler, host, realm, null, null,
                            null, 0);
                } else {
                    handler.cancel();
                }

            }
        }

httpAuth測試代碼實(shí)現(xiàn)

  • 使用flask完成最小httpauth原型
  • 使用定義好的webview訪問flask完成實(shí)現(xiàn)
  • 參考httpAuth實(shí)現(xiàn)片段
  • 瀏覽器上訪問http://127.0.0.1:5000 可以彈出對話框說明實(shí)現(xiàn)完畢
#!/usr/bin/env python
# coding: utf-8


from functools import wraps
from flask import request, Response, Flask


def check_auth(username, password):
    """This function is called to check if a username /
    password combination is valid.
    """
    return username == 'admin' and password == 'secret'


def authenticate():
    """Sends a 401 response that enables basic auth"""
    return Response(
        'Could not verify your access level for that URL.\n'
        'You have to login with proper credentials', 401,
        {'WWW-Authenticate': 'Basic realm="Login Required"'})


def requires_auth(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        auth = request.authorization
        if not auth or not check_auth(auth.username, auth.password):
            return authenticate()
        return f(*args, **kwargs)
    return decorated


app = Flask(__name__)


@app.route('/secret-page')
@requires_auth
def secret_page():
    return 'secret_page'


if __name__ == '__main__':
    app.run(host="0.0.0.0",debug=True)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寻馏,一起剝皮案震驚了整個濱河市棋弥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诚欠,老刑警劉巖顽染,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異轰绵,居然都是意外死亡粉寞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門左腔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唧垦,“玉大人,你說我怎么就攤上這事液样≌窳粒” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵鞭莽,是天一觀的道長坊秸。 經(jīng)常有香客問我,道長澎怒,這世上最難降的妖魔是什么褒搔? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮喷面,結(jié)果婚禮上星瘾,老公的妹妹穿的比我還像新娘。我一直安慰自己乖酬,他們只是感情好死相,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布融求。 她就那樣靜靜地躺著咬像,像睡著了一般。 火紅的嫁衣襯著肌膚如雪生宛。 梳的紋絲不亂的頭發(fā)上县昂,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音陷舅,去河邊找鬼倒彰。 笑死,一個胖子當(dāng)著我的面吹牛莱睁,可吹牛的內(nèi)容都是我干的待讳。 我是一名探鬼主播芒澜,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼创淡!你這毒婦竟也來了痴晦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤琳彩,失蹤者是張志新(化名)和其女友劉穎誊酌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體露乏,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碧浊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘟仿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箱锐。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猾骡,靈堂內(nèi)的尸體忽然破棺而出瑞躺,到底是詐尸還是另有隱情,我是刑警寧澤兴想,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布幢哨,位于F島的核電站,受9級特大地震影響嫂便,放射性物質(zhì)發(fā)生泄漏捞镰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一毙替、第九天 我趴在偏房一處隱蔽的房頂上張望岸售。 院中可真熱鬧,春花似錦厂画、人聲如沸凸丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屎慢。三九已至,卻和暖如春忽洛,著一層夾襖步出監(jiān)牢的瞬間腻惠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工欲虚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留集灌,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓复哆,卻偏偏與公主長得像欣喧,于是被迫代替她去往敵國和親腌零。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容