大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session
2015-12-24 17:32
375 查看
回到目录
事情是这样的,我们最近开了一个APP,主要使用xamarin做了一个登陆,它与服务器API进行数据通讯,当用户名密码正确去,跳转到新的activity,并在webview控件中打开服务端的Html5页面,而h5页面有些需要进行授权才能访问,如用户中心,我的订单,我的商品等等,而我们的登陆是在原生的activity里实现的,在登陆成功后服务端会向它分配一个SessionID,并存储在客户端,以做为下次访问的标识,而使用webview进行访问页面时,这个sessionID和之前的是不同的,所以,在之前的授权是无效的,为了解决这个问题,我们需要让原生和H5网站的sessionID进行同步!
Login Activity内容
然后在Page Activity中将这个sessionID写到对应的域名中
在上面的代码中,我定义了一个全局变量,用来保存当前的sessionID
这个对象是静态的,属性也是静态的,这说明它是一个在程序启动时就会被初始化的对象!
回到目录
事情是这样的,我们最近开了一个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; } }
这个对象是静态的,属性也是静态的,这说明它是一个在程序启动时就会被初始化的对象!
回到目录
相关文章推荐
- Android性能优化之如何避免Overdraw
- ASP.NET C# 日期 时间 年 月 日 时 分 秒 格式及转换(转自happymagic的专栏)
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Android开发 SQLite 通过.db文件导入已有数据库
- iOS开发-同一段文字显示不同颜色
- android 使用post方式上传文件
- 手机端的各种默认样式比如 ios的按钮变灰色
- iOS上级往下级传值
- android之简单好用的本地生成验证码并进行验证
- iOS 图片圆角
- fiddler ios 手机抓包
- iOS开发系列--Objective-C之KVC、KVO
- android初学之如何去除gridview点击时出现的黄色边框
- IOS APP结构思路
- Android开发官方文档---Capturing Photos
- iOS如何判断NSDictionary是否包含某个key
- no override found for vtkpolydatamapper解决方法
- android Material Design:主题
- Cocos2d-js笔记
- iOS怎么防止文件被Icloud或者iTunes备份