V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MarkBrown
V2EX  ›  问与答

web应用的用户认证模块在前端做可以吗?

  •  
  •   MarkBrown · 2013-08-19 15:42:10 +08:00 · 2785 次点击
    这是一个创建于 4118 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在做一个多用户角色的web应用,不同角色进入系统和页面跳转都需要验证用户的权限。我现在用cookie做验证。请问在前端做验证可行吗?有哪位大神有这方面的经验吗?不甚感激!
    14 条回复    1970-01-01 08:00:00 +08:00
    lichao
        1
    lichao  
       2013-08-19 15:45:31 +08:00
    一般来讲是即时从 DB(或者 cache) 中判断权限吧,cookie 怎么做?
    MarkBrown
        2
    MarkBrown  
    OP
       2013-08-19 16:52:25 +08:00
    当然是从DB里读取数据,然后存到cookie里。我们遇到的问题是页面跳转时,浏览器会先加载一部分页面,然后读取cookie,判断权限,这样就会出现当页面跳转不成功时(也就是权限不对时)页面加载一半然后跳到登陆页面的情况。难道现在只有后台验证而没有前端验证码?
    lichao
        3
    lichao  
       2013-08-19 16:54:06 +08:00
    @MarkBrown 显然后台验证靠谱啊
    MarkBrown
        4
    MarkBrown  
    OP
       2013-08-19 16:57:40 +08:00
    感觉是这样,目前主流都是用后台做。只是想探究一下用前端做的可行性。如果能在前端做验证的话,可以减轻服务器的压力。
    MarkBrown
        5
    MarkBrown  
    OP
       2013-08-19 16:58:18 +08:00
    我想做一个重前端,轻后台的应用。
    lichao
        6
    lichao  
       2013-08-19 16:58:55 +08:00
    @MarkBrown 你就没觉得前端验证不可靠吗?
    kchum
        7
    kchum  
       2013-08-19 16:59:22 +08:00 via iPhone
    后台验证的,服务器处理没那么弱!
    binux
        8
    binux  
       2013-08-19 16:59:43 +08:00
    如果后端没有访问需要授权的数据,你认证他干嘛?
    如果访问了,那肯定要和后端通行,那你认证一下不就完了?!
    Perry
        9
    Perry  
       2013-08-19 17:05:01 +08:00 via iPhone
    关键是前端怎么验证,如果是auth+ajax的话没问题
    MarkBrown
        10
    MarkBrown  
    OP
       2013-08-19 17:07:31 +08:00
    我是在用户登录时把授权的信息保存在cookie里了。页面跳转时只要读取cookie里的授权信息。只有登录时才通过后台认证。
    MarkBrown
        11
    MarkBrown  
    OP
       2013-08-19 17:08:58 +08:00
    @Perry 请问具体怎么做?
    Perry
        12
    Perry  
       2013-08-19 17:18:51 +08:00 via iPhone   ❤️ 1
    举个例子
    var auth = "xxxxxxxxxxxxxxxxxxx";
    然后ajax的时候带着这个auth作为data提交。在后台认证auth的存在就行。
    不知道这个是不是你的意思
    wdd2007
        13
    wdd2007  
       2013-08-19 17:24:36 +08:00   ❤️ 1
    @MarkBrown

    在页面头部判断 cookie ,验证失败就跳转,加上 exit() 终止后边的执行,应该不会出现加载一半的情况啊。
    MarkBrown
        14
    MarkBrown  
    OP
       2013-08-19 17:39:04 +08:00
    @wdd2007 说的办法很好呀,我咋就没想到呢。主要是我用了require.js来加载JS文件,判断用户是否登录的模块是用angularjs的模块来写的,加载的比较晚,所以就会出现空白页面的情况。 另外,就如@Perry 所说,在前端保存anth验证码,每次ajax的时候都提交一下auth来验证一下,这个问题也就解决了。
    不过,auth存在哪里呢?加个密存到cookie里可行吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1432 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:21 · PVG 01:21 · LAX 09:21 · JFK 12:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.