请教一个关于权限功能的问题,是设计通用性权限框架。

Sumour 2017-12-19 09:36:38
今天接到一个任务,是需要写一套用户的权限功能,要求通用,就是无论拿到哪一套系统,都可以使用。
关键是不能使用持久层,要做到与持久层框架无关。不过可以使用spring。
然后我是暂时没有想法怎么做。
想到的难点有如下:
1.自动建表问题,如果不自动建表,那关联权限查询的所有功能都需要都不知道用户生成的字段名和表名。
2.从自动建表引申的另外一个问题,数据库语法不通用。
3.如果设置自动建表,不知道怎么扫描到entity这个文件夹,因为不知道用户工程目录架构。(不知道持久层怎么实现的,还在翻源码)
4.使用xml限定字段关联等等,这样的做法有点不好。每次查询都需要遍历这个xml,而且同样会出现不知道字段名和表名。


各位大大有什么好的解决办法,小的先感谢一下。
...全文
224 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kampoo 2017-12-21
  • 打赏
  • 举报
回复
好久以前设计过一个框架,针对webapp的: 1. 权限,最基本的访问控制; 2. 角色,由若干权限组成。 3. 用户,账号口令登录,可以赋予若干角色。 每个模块均声明自己使用的权限,一个webapp使用SSO时,访问SSO接口进行鉴权,通过则继续访问,否则重定向到权限不足的页面。 上述框架能够满足大多数情况下的需求,当然还可以再复杂一些,这个框架本身也可以提供更多功能。
Sumour 2017-12-20
  • 打赏
  • 举报
回复
没有比较满意的答案。。。 自己载用jdbc开发,设置xml配置文件,让用户把表名,约束都写里面,然后自己去读取进行约束,表生成由用户做。完全基于jdbc开发,与所有框架无关。。。。
Sumour 2017-12-19
  • 打赏
  • 举报
回复
1楼的说法使用标准sql这个可以想一想,这样就可以自己写一个自动建表的类,把权限表都生成好,并且放出几个接口用于用户权限查询,菜单查询。但是我不知道能不能实现外键关联等等问题。因为我对数据库也不太熟。 2楼哥们如果使用jdbcTemplate那就需要用户继续配置了,不能拿来就达到使用的目的,还需要配置数据库类型。不过可以导成jar这个可以考虑的。 关于权限这块,应该是一步到位的,拿进来就可以直接使用了,至于业务流程那些就得其他开发者继续开发了。我只管权限的操作。 不过都谢谢你们的解答。
RockeyCui 2017-12-19
  • 打赏
  • 举报
回复
1.既然是别的系统拿来就可以用,那最好写成jar包。 2.可以自己写个bean来完成建表操作,这个bean里需要有一个属性说明是哪种数据库,通过spring管理注入,判断,建表可以考虑JdbcTemplate+sql。 3.用JdbcTemplate来完成所有持久化,自己用到了spring,别人也应该用吧?全部用sql语句操作。 4.自己提供几个service,什么配置角色权限啦,返回角色菜单树啦,都写好,别人拿来就能用。路径是自己的也没问题,直接让他的工程多扫你的包就行。 5.JdbcTemplate在spring里大家应该都配的叫jdbcTemplate吧,不清楚。 6.这样别的系统用你的jar包,只需要 配置你的service扫描路径,没有配jdbcTemplate,配一下。然后通过 <bean id="dbInit" class="com.xx.xx.DbInit"><property name="type" ref="oracle" /></bean>来建建表。 自己想的,不知道靠不靠谱,一起交流。
maradona1984 2017-12-19
  • 打赏
  • 举报
回复
sql就写标准sql,函数什么的都不要用 个人觉得数据库就那么几种,权限表也不多,为每个不同的数据库微调表字段类型什么的 分页的时候就用mybatis插件,数据库大部分问题就解决了 如果用户统一,那可以设计一个独立的支撑多个系统的权限系统,分配申请权限都在那个系统,认证之后业务系统直接拉取权限列表. 这样做更简单,业务系统不需要管这些杂七杂八的事情,当然前提是用户统一 这个权限系统本身也需要一个权限系统,当然可以你这个权限系统当作业务系统来看,认证之后直接拉取权限列表,只需要初始化数据罢了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧