letitbesqzr
V2EX  ›  Java

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

  •  
  •   letitbesqzr · Jul 2, 2015 · 3091 views
    This topic created in 4027 days ago, the information mentioned may be changed or developed.
    比如一个删除用户的功能:
    接收要删除的用户id -> 判断有没有权限 -> 有权限则删除

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

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

    一般来说,第一个比较常见,因为在展示的时候也是根据user刷选出对象,然后你把update语句或者del带上用户ID,然后看返回的结果就知道咯。一般都是抛异常。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   961 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 22:44 · PVG 06:44 · LAX 15:44 · JFK 18:44
    ♥ Do have faith in what you're doing.