大叔也說Xamarin~Android篇~原生登陸與WebView的網站如何共用Session

來源:互聯網
上載者:User

標籤:

原文:大叔也說Xamarin~Android篇~原生登陸與WebView的網站如何共用Session

事情是這樣的,我們最近開了一個APP,主要使用xamarin做了一個登陸,它與伺服器API進行資料通訊,當使用者名稱密碼正確去,跳轉到新的activity,並在webview控制項中開啟服務端的Html5頁面,而h5頁面有些需要進行授權才能訪問,如使用者中心,我的訂單,我的商品等等,而我們的登陸是在原生的activity裡實現的,在登陸成功後服務端會向它分配一個SessionID,並儲存在用戶端,以做為下次訪問的標識,而使用webview進行訪問頁面時,這個sessionID和之前的是不同的,所以,在之前的授權是無效的,為瞭解決這個問題,我們需要讓原生和H5網站的sessionID進行同步!

Login Activity內容

 if (msg.State == "200")    {        var ccd = new List<string>(response.Result.Headers.GetValues("Set-Cookie"));        var arr = ccd[0].Split(new char[] { ‘;‘ })[0].Split(new char[] { ‘=‘ })[1];        Toast.MakeText(this, "sessionid=" + arr, ToastLength.Short).Show();        ConfigData.SessionID = arr;        Intent intent = new Intent(this, typeof(PageActivity));        StartActivity(intent);     }

然後在Page Activity中將這個sessionID寫到對應的網域名稱中

        CookieSyncManager.CreateInstance(this);            CookieManager cookieManager = CookieManager.Instance;            cookieManager.SetCookie(GetString(Resource.String.apiHost), "ASP.NET_SessionId=" + ConfigData.SessionID);            var webView = FindViewById<WebView>(Resource.Id.webView);            webView.Settings.JavaScriptEnabled = true;            webView.LoadUrl(api);            webView.SetWebViewClient(new CustWebViewClient());

在上面的代碼中,我定義了一個全域變數,用來儲存當前的sessionID

  public static class ConfigData    {        public static string SessionID { get; set; }    }

 這個對象是靜態,屬性也是靜態,這說明它是一個在程式啟動時就會被初始化的對象!

 

大叔也說Xamarin~Android篇~原生登陸與WebView的網站如何共用Session

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.