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

2015-07-02 11:54:04 +08:00
 letitbesqzr
比如一个删除用户的功能:
接收要删除的用户id -> 判断有没有权限 -> 有权限则删除

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

至于性能,真到了瓶颈才去考虑它吧,再说,能有多少人会有权限的情况
mhycy
2015-07-02 12:12:29 +08:00
凡是没有权限的都是异常状况,可理解成:有用户尝试入侵。
对于这类情况直接抛异常不会有太大的性能问题。
因为所有正常的访问,都不应存在无权限的可能性(没有权限按钮就不可用了)
pelloz
2015-07-02 12:48:18 +08:00
抛异常是不错的选择。而你说的性能,这里没有必要考虑,瓶颈不会出现在这里。除非有用户使用程序不停的尝试。解决方法也很多,比如封停他的账号或者IP等。
letitbesqzr
2015-07-02 12:52:54 +08:00
@pelloz
@mhycy
@mgcnrx11
收到,感谢指教,仔细想了下,正常戳页面上的按钮 请求是不会触发异常, 后面确实有恶意用户,再考虑用ip频率限制之类的办法。
jugelizi
2015-07-02 12:53:46 +08:00
。。。。这算异常操作吧 没有权限删那就应该没有删除按钮显示 恶意的操作返回什么都无所谓啊
yangxiongwei
2015-07-02 13:05:21 +08:00
整个拦截器,判断是否有权限,没权限直接给重定向到一个403界面
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,然后看返回的结果就知道咯。一般都是抛异常。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/202715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX