V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
letitbesqzr
V2EX  ›  Java

j2ee 开发中,当前用户没有权限增删改之类的错误,你们是怎么去处理?

  •  
  •   letitbesqzr · 2015-07-02 11:54:04 +08:00 · 2509 次点击
    这是一个创建于 3458 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如一个删除用户的功能:
    接收要删除的用户id -> 判断有没有权限 -> 有权限则删除

    如果没有权限,大家是怎么处理的? 是直接抛一个自定义异常,然后由mvc框架去统一处理哪些异常解析到哪个页面?
    但听到别人说,抛异常非常损耗性能。
    7 条回复    2015-07-02 14:26:21 +08:00
    mgcnrx11
        1
    mgcnrx11  
       2015-07-02 12:02:50 +08:00   ❤️ 1
    抛异常,我认为是符合业务语义的方式,没有权限去做了有权限的事,本身就是异常的情况。

    至于性能,真到了瓶颈才去考虑它吧,再说,能有多少人会有权限的情况
    mhycy
        2
    mhycy  
       2015-07-02 12:12:29 +08:00   ❤️ 1
    凡是没有权限的都是异常状况,可理解成:有用户尝试入侵。
    对于这类情况直接抛异常不会有太大的性能问题。
    因为所有正常的访问,都不应存在无权限的可能性(没有权限按钮就不可用了)
    pelloz
        3
    pelloz  
       2015-07-02 12:48:18 +08:00   ❤️ 1
    抛异常是不错的选择。而你说的性能,这里没有必要考虑,瓶颈不会出现在这里。除非有用户使用程序不停的尝试。解决方法也很多,比如封停他的账号或者IP等。
    letitbesqzr
        4
    letitbesqzr  
    OP
       2015-07-02 12:52:54 +08:00
    @pelloz
    @mhycy
    @mgcnrx11
    收到,感谢指教,仔细想了下,正常戳页面上的按钮 请求是不会触发异常, 后面确实有恶意用户,再考虑用ip频率限制之类的办法。
    jugelizi
        5
    jugelizi  
       2015-07-02 12:53:46 +08:00
    。。。。这算异常操作吧 没有权限删那就应该没有删除按钮显示 恶意的操作返回什么都无所谓啊
    yangxiongwei
        6
    yangxiongwei  
       2015-07-02 13:05:21 +08:00
    整个拦截器,判断是否有权限,没权限直接给重定向到一个403界面
    yannxia
        7
    yannxia  
       2015-07-02 14:26:21 +08:00
    一般有两个思路:
    1.交给数据库: 比如 update a =xxxx form table where user_id = xxx and xxx
    2.交给代码: select xxx from table , 之后确定下是否是一个用户,或者是有权限之类的。

    一般来说,第一个比较常见,因为在展示的时候也是根据user刷选出对象,然后你把update语句或者del带上用户ID,然后看返回的结果就知道咯。一般都是抛异常。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4167 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:09 · PVG 12:09 · LAX 20:09 · JFK 23:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.