V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
niaoren
V2EX  ›  iDev

如果 app 里面嵌套一个网页实现某一个功能,但网页是需要用户登录才能用。怎么设计这个网页认证?

  •  
  •   niaoren · 2015-02-03 17:11:21 +08:00 · 10174 次点击
    这是一个创建于 3371 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是要用oauth吗?但是好像不通。

    18 条回复    2015-02-08 09:43:45 +08:00
    andy12530
        1
    andy12530  
       2015-02-03 17:17:20 +08:00
    http://bj.ganji.com/shouji/1359794712x.htm

    点击『发送到手机』。

    你学习一下这个流程
    niaoren
        2
    niaoren  
    OP
       2015-02-03 17:23:14 +08:00
    @andy12530 没看明白哦。。 我说的是ios应用里面嵌套网页,不同啊。
    dong3580
        3
    dong3580  
       2015-02-03 17:26:30 +08:00
    1.oauth2授权?
    2.ajax请求登录?
    这样可行?
    我怎么觉得用什么都可行呀,关键是拿到登录之后的token或者你们要用的cookies.
    felixzhu
        4
    felixzhu  
       2015-02-03 17:27:37 +08:00
    传一个token就可以了
    learnshare
        5
    learnshare  
       2015-02-03 17:30:19 +08:00
    @niaoren 你是只想登录网页,还是想通过登录网页完成 App 的授权登录?

    如果只是登录网页,传统的 cookie/session/token 都可以,如果要登录 App,可以参考新浪之类的 oauth 接口
    niaoren
        6
    niaoren  
    OP
       2015-02-03 17:32:59 +08:00
    @dong3580
    @felixzhu

    先在APP登录好,得到token,然后在嵌套网页时带过去token,在网页程序根据token得到用户ID存入session,便于网页点击去另外页面认证、是否可行?
    cevincheung
        7
    cevincheung  
       2015-02-03 17:33:48 +08:00
    app里有个网页

    给webview增加js接口(window.app.getUser())。获取失败提示用户登录。获取成功那就继续……
    niaoren
        8
    niaoren  
    OP
       2015-02-03 17:42:13 +08:00
    @cevincheung 你的意思是网页里面调用objc函数来判断登录?但是那个网页不在webciew里面访问(在Safari)不就有安全问题了吗?
    nilennoct
        9
    nilennoct  
       2015-02-03 17:59:01 +08:00 via iPad
    native code登陆后生成一个唯一的token,访问 http://www.xxx.com/auth?token={token}&timestamp={time},在对应的’/auth'这个接口检查登录信息是否合法(token、timestamp等是否合法),然后跳转不同功能页。
    cevincheung
        10
    cevincheung  
       2015-02-03 18:12:55 +08:00
    @niaoren 你不会判断有没有这个函数啊…… - -#你获取的信息又没有用户名、密码。只是个token验证一下。再不行token的算法还能写在app里跟服务端一致就行。咋不安全了。
    dong3580
        11
    dong3580  
       2015-02-03 18:14:49 +08:00 via Android
    @niaoren
    可行。不过,
    token 都有了为什么还要session呢?
    felixzhu
        12
    felixzhu  
       2015-02-03 21:37:16 +08:00
    @niaoren 可行,不用存session
    felixzhu
        13
    felixzhu  
       2015-02-03 21:37:48 +08:00
    @niaoren 加一个middleware,直接根据token把用户对象绑定到request就行了
    lujiajing1126
        14
    lujiajing1126  
       2015-02-03 22:17:25 +08:00
    客户端登陆。。。然后。。。把token塞给uiwebview。。就好了
    niaoren
        15
    niaoren  
    OP
       2015-02-03 22:49:10 +08:00
    @dong3580 我的想法是可以让webview里面的页面可以自己点击跳转,跳转后仍然是登录状态
    hyzjshwo
        16
    hyzjshwo  
       2015-02-03 23:05:51 +08:00
    Native (post)->web app(login form)->Native(logic eg:save cookies)->web view(set cookies)
    dong3580
        17
    dong3580  
       2015-02-04 01:26:22 +08:00 via Android
    @niaoren
    登录状态可以保存在token里呀,也可以用传统的session
    cralison
        18
    cralison  
       2015-02-08 09:43:45 +08:00
    刚完这个。

    打开网页的请求里加token参数,如果没有登录就加空字符,后端判断,如果是空字符就发一个特定url的请求,webview截获这个特定url,调登录界面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5036 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 05:41 · PVG 13:41 · LAX 22:41 · JFK 01:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.