`
冰火特蕾莎
  • 浏览: 20762 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

老生常談-權限控制的一些話題

    博客分类:
  • Java
阅读更多

權限判斷一向蔸諟大伙儿常谈的话题啦。偶列举一下比较常见的做法吧(注意,是常见的)

数据库端最简单的可能 是会建 权限实体表、角色表、用户表,偶称其为权限基础表、以及三者之间的关联表。

当然复杂一点的有url到权限或者角色的关联表,用以管理url访问的权限控制。

或者一些其他资源与权限基础表之间的关联,总之就是做一些与具体业务挂钩的扩展啦。

 

茬后代代码端,多半会在某一处施加拦截器用以做权限判断吧。

例如用xwork的拦截器拦截action,通过当前用户色角色以及Action的访问url路径 再加上权限实体三者之间的映射关系来判断用户是否有访问Action的权利。

当然也有用AspectJ的方式来实现,不过原理是一样的。

 

在前台页面上,首先说导航菜单这一块儿。后台肯定是有一个导航菜单表跟角色关联啦,不同的角色登陆进来能看到不同的菜单。这不是问题,因为几个简单的迭代就出菜单啦。

 

最麻烦就是业务页面上这一块儿,按钮级的权限控制,真的是很麻烦呢。

很多人怕麻烦,直接省略掉前台按钮级的权限控制,如果你点了你不能点的按钮,就给个提示说“你不够格”。

 

但理论上,应该直接屏蔽掉这个按钮是最好的,但是应该怎么做呢?

硬编码,偶肯定会被人说菜菜啦。

 

偶目前想到的是用tag的方式。但使用范围太窄了呀。并且,一旦用了tag,前台页面就依赖于这个tag了,换句话说,以后要是决定不用tag了,还很麻烦滴。再者,在我的tag还没出来以前,人家做业务的就没法动手写页面了。因为写了以后还得改,这也是偶不想看见的。

 

有没有类似于AOP一样的无侵入式的方法,能够很优雅的解决视图层的权限控制的问题呢?偶想虚心学习哦

分享到:
评论
16 楼 冰火特蕾莎 2009-11-09  
leeldy 写道
阅读困难,呼吸困难。。。
权限控制到每一条SQL的执行,应该就差不多了。。。


全是这种...
15 楼 冰火特蕾莎 2009-11-09  
iaimstar 写道
url判断就可以了


这位仁兄也没搞明白俺的问题
url判断是在后端通过切面去实现的

前端 前端 前端 前端!!!
14 楼 冰火特蕾莎 2009-11-09  
enjsky 写道
我们是将每一个事件编一个号码
然后将事件分配到角色中去,缓存到内存中,即使判断否有这个事件操作的权限
不知道大家有没有更好的办法,学习中~~~


这只是我在后端验证的方式(之一)
我问的问题是前端(HTML页面上)如何实现按钮级屏蔽级的权限
我的方法是JSP-Tag
但只适用于JSP的情况
13 楼 treblesoftware 2009-11-09  
冰火特蕾莎 写道
Javaeye里的都是老男人啊。
谈技术就就谈技术,非要影响别人的兴趣
心眼太小
用火星文就跟你穿衣服一样,你不喜欢传大红袍,还不让别人穿啊。


我才大四。 何来老男人之有? 谈技术是严谨的,连我这个小弟弟都知道的道理,我想学姐您应该懂吧?
12 楼 treblesoftware 2009-11-09  
冰火特蕾莎 写道
treblesoftware 写道
能不能不要用火星文?


还有,你那个什么无入侵日志。


本来注解的入侵就够大了,要不是注解能提高开发效率,怀疑没有用它的理由了。

你这里还加个@ ,下面的代码明显被入侵了,还说无入侵。你这个最多算个GOOG好主意,而并不是传说中那个根本就不存在的无入侵。

@Log("插入了一个新文档${params[0].id}");  
public void addNewDoc(Doc doc){  
  //  
}  


用XWORK的拦截做权限拦截也很扯淡,你这样一来会导致你ACTION膨胀的厉害,还有就是你的SESSION膨胀,要不就是你做成无状态的,访问数据库。这样一来,你用户一多,你的系统性能可想而知。说不定DOWN机也是很正常的,权限这东西先考虑好你的分层,再来谈吧,本来这东西就是你系统设计的问题。

PS:我很讨厌你的火星文,还有火星语。



我的第一种方案,是配置文件式的,对代码肯定是无侵入的啊。
你咋不看呢,Annotation是我后来说为了方便而提出的啊。
小心眼儿男


恩,我没用火星文,所以我是小心眼男人。
11 楼 冰火特蕾莎 2009-11-09  
treblesoftware 写道
能不能不要用火星文?


还有,你那个什么无入侵日志。


本来注解的入侵就够大了,要不是注解能提高开发效率,怀疑没有用它的理由了。

你这里还加个@ ,下面的代码明显被入侵了,还说无入侵。你这个最多算个GOOG好主意,而并不是传说中那个根本就不存在的无入侵。

@Log("插入了一个新文档${params[0].id}");  
public void addNewDoc(Doc doc){  
  //  
}  


用XWORK的拦截做权限拦截也很扯淡,你这样一来会导致你ACTION膨胀的厉害,还有就是你的SESSION膨胀,要不就是你做成无状态的,访问数据库。这样一来,你用户一多,你的系统性能可想而知。说不定DOWN机也是很正常的,权限这东西先考虑好你的分层,再来谈吧,本来这东西就是你系统设计的问题。

PS:我很讨厌你的火星文,还有火星语。



我的第一种方案,是配置文件式的,对代码肯定是无侵入的啊。
你咋不看呢,Annotation是我后来说为了方便而提出的啊。
小心眼儿男
10 楼 冰火特蕾莎 2009-11-09  
人家说做技术的男人爱钻牛角尖,性格偏激,没容人之度,果然没错啊
9 楼 冰火特蕾莎 2009-11-09  
Javaeye里的都是老男人啊。
谈技术就就谈技术,非要影响别人的兴趣
心眼太小
用火星文就跟你穿衣服一样,你不喜欢传大红袍,还不让别人穿啊。
8 楼 linliangyi2007 2009-11-09  
严重BS楼主的火星文,对NC式的90后不抱认可。
7 楼 enjsky 2009-11-09  
我们是将每一个事件编一个号码
然后将事件分配到角色中去,缓存到内存中,即使判断否有这个事件操作的权限
不知道大家有没有更好的办法,学习中~~~
6 楼 leeldy 2009-11-09  
阅读困难,呼吸困难。。。
权限控制到每一条SQL的执行,应该就差不多了。。。
5 楼 tasnow8 2009-11-09  
非主流入侵?  看来咱都老了.
4 楼 swen00 2009-11-09  
写一组像二进制的编码,例如 0000000 这样的,分级控制
3 楼 iaimstar 2009-11-09  
url判断就可以了
2 楼 treblesoftware 2009-11-09  
能不能不要用火星文?


还有,你那个什么无入侵日志。


本来注解的入侵就够大了,要不是注解能提高开发效率,怀疑没有用它的理由了。

你这里还加个@ ,下面的代码明显被入侵了,还说无入侵。你这个最多算个GOOG好主意,而并不是传说中那个根本就不存在的无入侵。

@Log("插入了一个新文档${params[0].id}");  
public void addNewDoc(Doc doc){  
  //  
}  


用XWORK的拦截做权限拦截也很扯淡,你这样一来会导致你ACTION膨胀的厉害,还有就是你的SESSION膨胀,要不就是你做成无状态的,访问数据库。这样一来,你用户一多,你的系统性能可想而知。说不定DOWN机也是很正常的,权限这东西先考虑好你的分层,再来谈吧,本来这东西就是你系统设计的问题。

PS:我很讨厌你的火星文,还有火星语。
1 楼 wxq594808632 2009-11-07  
引用
權限判斷一向蔸諟


我们来自火星。。。

相关推荐

    老生常谈js-react组件生命周期

    对于React 16.3及以上版本,新增了两个静态方法static getDerivedStateFromProps和getSnapshotBeforeUpdate用于替代一些旧的生命周期方法。 理解React组件生命周期及其方法,对于优化组件渲染性能和管理组件状态都...

    老生常谈外链 站长要做到对症下药.pps

    老生常谈外链 站长要做到对症下药.pps

    单元测试进行曲

    单元测试进行曲单元测试又是老生常谈-'单元测试',说实话自己在单元测试上是'语言上的巨人,行动上的矮子',属于那种说的比做的多的人^_^。不过也不能说什么也没做。记得去年年末的时候自己还设计并实现过一个简单的...

    老生常谈js动态添加事件--- 事件委托

    如果事件处理器绑定了过多的事件,可能会造成性能问题,特别是在一些包含大量子元素的父元素上绑定处理器时。此外,如果事件冒泡被子元素内部的事件处理器阻止了,那么父元素上的事件监听器将不会触发。这就需要...

    老生常谈ProgressBar、ProgessDialog的用法

    ProgressBar和ProgressDialog是Android开发中常见的两种进度条控件,用于展示任务执行的进度或等待状态。下面我们将深入探讨这两种控件的用法。 首先,ProgressBar是一个可以显示具体进度的组件,它可以是圆形或...

    jQuery-Kwicks-Animation:Kwicks 图书馆是老生常谈,但却是个好东西。 如果您想计算它生成的不同事件并制作幻灯片,这里有一些 javascript 可以帮助您。 我花了一些时间,所以可能会为您节省一些时间

    jQuery-Kwicks-Amination Kwicks 图书馆是老生常谈,但却是个好东西。 如果您想计算它生成的不同事件并制作幻灯片,这里有一些 javascript 可以帮助您。 我花了一些时间,所以可能会为您节省一些时间:) 看看它在行动

    电子技术的老生常谈——接地.pdf

    正如标题所言,《电子技术的老生常谈——接地》一文中提到的那样,尽管接地的基本概念在每一次培训和交流中都会被提及,但往往缺乏一个通用而全面的方法论指导。本文旨在深入探讨接地的各种类型、目的以及具体的实施...

    重构-改善既有代码的设计.chm

    当对象技术成为老生常谈之后——尤其在Java编程语言之中,新的问题也在软件开发社区中浮现了出来。缺乏经验的开发人员完成了大量粗劣设计,获得的程序不但缺乏效率,也难以维护和扩展。渐渐地,软件系统专家发现,与...

    老生常谈javascript的面向对象思想

    在进行JavaScript编程的过程中,面向对象思想一直是一个核心的概念。面向对象编程(OOP)是通过创建对象来模拟现实世界的一种编程范式。在JavaScript中,对象可以通过不同的方法创建和定义。面向对象有三大基本特性...

    老生常谈android中的事件传递和处理机制

    总结来说,Android中的事件传递和处理机制是一个深度和广度都很大的话题,涉及到UI设计的许多细节。理解这一机制能够帮助开发者更好地控制用户交互,提高应用的用户体验。通过不断实践和学习,开发者可以熟练掌握这...

    老生常谈java中的fail-fast机制

    Java中的Fail-Fast机制详解 Java中的Fail-Fast机制是一种错误检测机制,当多个线程对集合进行结构上的改变操作时,有可能会产生Fail-Fast机制。这种机制是Java集合框架的一部分,可以帮助检测并发修改引发的错误。...

    老生常谈PHP位运算的用途

    举个例子,我们可以定义一些权限常量: ```php define("mDELETE", 8); define("mUPLOAD", 4); define("mWRITE", 2); define("mREAD", 1); ``` 在这里,我们定义了四个权限常量,每个权限对应一个特定的二进制位。8、...

    老生常谈的24种Java设计模式

    Java设计模式是在特定环境下,为了解决某类重复出现的问题而总结出来的一套成功或有效的解决方案。这些设计模式旨在提高代码的可重用性、可维护性和可扩展性。 设计模式通常包含以下几个关键要素: ...

    老生常谈js中的MVC

    JavaScript中的MVC(Model-View-Controller)是一种广泛应用于Web开发的架构模式,它将复杂的交互逻辑分解为三个相互协作的部分:模型、视图和控制器。 1. **模型(Model)**: 模型主要负责存储和管理应用的数据...

    老生常谈Bootstrap媒体对象

    5. **浮动控制**:使用`.media-left`和`.media-right`类来控制媒体对象在主体中的浮动方式,分别使媒体对象向左或向右浮动,并与其他内容保持一定的间距。 在HTML结构中,`.media-right`应当放在`.media-body`的...

    老生常谈Log4j和Log4j2的区别(推荐)

    Log4j和Log4j2的区别 Log4j和Log4j2是两个常用的日志记录工具,它们都来自Apache开源项目。虽然它们都是日志记录工具,但是它们之间有很多区别。下面我们将从配置文件类型、核心JAR包、文件渲染和Log调用四个方面来...

    老生常谈position定位——让人又爱又恨的属性

    在CSS世界里,`position`属性是一个至关重要的概念,它决定了元素在页面上的布局方式,因此被称为“老生常谈”的话题。`position`属性控制元素的定位模式,赋予开发者极大的灵活性来创建复杂的布局。然而,这也是一...

    老生常谈之Java中堆和栈的概念和区别

    可以通过调整JVM的启动参数,如-Xss控制栈的大小,-Xms和-Xmx控制堆的初始大小和最大大小,来优化程序的性能。 总结来说,Java中的堆和栈各有优势和特点:堆适合存储复杂、生命周期长的对象,而栈则适用于快速存取...

Global site tag (gtag.js) - Google Analytics