UIWebView登陆需要记住用户名和密码下次自动登陆。(iOS UIWebView 通过 cookie 完成自动登录。)
阿神
阿神 2017-04-17 17:32:11
[iOS讨论组]

现在我有个APP是嵌入的webView 登陆需要记住用户名和密码下次自动登陆,求大神看看如何实现?谢谢
目前这个问题我已经解决了,希望有用到的朋友来这里看http://www.jianshu.com/p/9bf9...:给颗心
另我把代码写到这里一份也:
1、在UIWebView的代理方法中实现获取cookies并将cookies放到NSUserDefaults保存起来

  - (void)webViewDidFinishLoad:(UIWebView*)webView{
    NSArray*nCookies = [[NSHTTPCookieStoragesharedHTTPCookieStorage]cookies];
    NSHTTPCookie*cookie;
    for(idcinnCookies)
    {
    if([cisKindOfClass:[NSHTTPCookieclass]])
    {
    cookie=(NSHTTPCookie*)c;
    if([cookie.nameisEqualToString:@"PHPSESSID"]) {
    NSNumber*sessionOnly = [NSNumbernumberWithBool:cookie.sessionOnly];
    NSNumber*isSecure = [NSNumbernumberWithBool:cookie.isSecure];
    NSArray*cookies = [NSArrayarrayWithObjects:cookie.name, cookie.value, sessionOnly, cookie.domain, cookie.path, isSecure,nil];
    [[NSUserDefaultsstandardUserDefaults]setObject:cookiesforKey:@"cookies"];
    break;
    }
    }
    }
    }

2、获取cookies:运行之后,UIWebview加载url之前获取保存好的cookies,并设置cookies,

NSArray*cookies =[[NSUserDefaultsstandardUserDefaults]objectForKey:@"cookies"];
NSMutableDictionary*cookieProperties = [NSMutableDictionarydictionary];
[cookiePropertiessetObject:[cookiesobjectAtIndex:0]forKey:NSHTTPCookieName];
[cookiePropertiessetObject:[cookiesobjectAtIndex:1]forKey:NSHTTPCookieValue];
[cookiePropertiessetObject:[cookiesobjectAtIndex:3]forKey:NSHTTPCookieDomain];
[cookiePropertiessetObject:[cookiesobjectAtIndex:4]forKey:NSHTTPCookiePath];
NSHTTPCookie*cookieuser = [NSHTTPCookiecookieWithProperties:cookieProperties];
[[NSHTTPCookieStoragesharedHTTPCookieStorage]setCookie:cookieuser];

注意:要在[self.webView loadRequest:req];之前设置获取cookies!

阿神
阿神

闭关修行中......

全部回复(3)
黄舟

是否跟cookie有关

伊谢尔伦

我现在也遇到这个问题“在qpp中嵌套webview需要保存账户和密码下次登录时不用再输入了”,楼主解决了吗?用的什么方法?如果有方法实现能不能给我发到邮箱 928284971@qq.com

伊谢尔伦

没有必要这么做 ,也不要用cookie,webview里的单页面app是不能通过cookie来保持持久状态连接的,正确的做法应该是和后端去交换token ,检查token 是否过期 ,然后html5里面有一个重要的对象解决了web view里面持久化保存的问题:localstorage,localstorage 是一个类似于键值对的东西 保存在你的app 本地,你只要把你的用户信息以json 的方式存放到app里面,然后直接用js 去调用就可以了.举例 你第一次进来跳到登录页面以后 用户一旦登陆就把{username:'nickname',sex:'male',token:'yourtoken'}存放到localstorage的user 字段里,你下一次进webview 的时候只要去判断localstorage里的user字段是否为空,若不为空则取出user,然后每次和后端api请求都通过token,来判断 token 是否过期 如果过期则跳转到重新登录页面。这都是很标准的web app的标准做法。并且webview里的app建议使用angular或者react等框架和库来实现

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号