Web开发学习7按钮级别权限控制

[size=large]这个功能的思路是自己原创的,没看过其他例子,其实是在做之前网上搜了很多也没个可以参考的例子.主要技术是后台springsecurity做拦截判断,前台Extjs4做按钮动态渲染.如果你不了解springsecrity,那你可以先看下我的另一篇相关博客

[b]创建数据库表(liqiubase方式创建看上一篇)[/b] [/size]


<createTable tableName="permissions">
<column name="id" type="bigint">
<constraints nullable="false" primaryKey="true" />
</column>
<!-- 权限名称 -->
<column name="name" type="varchar(32)" />
<!-- 该权限需要访问的链接 -->
<column name="actionurl" type="varchar(256)" />
<!-- 该权限需要用到的js -->
<column name="jsurl" type="varchar(256)" />
<!-- 权限等级 1主菜单 2子菜单 3及以下按钮 -->
<column name="level" type="int" />
<!-- 菜单父级id -->
<column name="parentid" type="bigint"/>
<!-- 排序编号 -->
<column name="ordernum" type="int" defaultValue="0"/>
</createTable>

[size=large]这张是权限表,也是菜单(按钮)表,每个菜单都有他自己需要访问链接的权限,当菜单类型为子菜单或按钮时还需要配置该按钮对应的js文件,对没错,每个按钮都有自己独立的js文件,在用户没有按钮权限的时候,前端是js都不需要加载的

[b]添加菜单初始数据[/b]
[/size]


<insert tableName="permissions">
<column name="id" value="1"/>
<column name="name" value="用户管理" />
<column name="level" value="1" />
<column name="parentid" value="-1"/>
<column name="ordernum" value="1"/>
</insert>
<insert tableName="permissions">
<column name="id" value="101"/>
<column name="name" value="账号管理" />
<column name="actionurl" value="account!query.action" />
<column name="jsurl" value="user/account/searchGrid" />
<column name="level" value="2" />
<column name="parentid" value="1"/>
<column name="ordernum" value="1"/>
</insert>
<insert tableName="permissions">
<column name="id" value="102"/>
<column name="name" value="角色管理" />
<column name="actionurl" value="" />
<column name="jsurl" value="user/role/mainPanel" />
<column name="level" value="2" />
<column name="parentid" value="1"/>
<column name="ordernum" value="2"/>
</insert>
<insert tableName="permissions">
<column name="id" value="1001"/>
<column name="name" value="新增" />
<column name="actionurl" value="account!save.action" />
<column name="jsurl" value="user/account/searchGridAddBtn" />
<column name="level" value="3" />
<column name="parentid" value="101"/>
<column name="ordernum" value="1"/>
</insert>
<insert tableName="permissions">
<column name="id" value="1004"/>
<column name="name" value="修改" />
<column name="actionurl" value="account!save.action,account!find.action" />
<column name="jsurl" value="user/account/searchGridUpdBtn" />
<column name="level" value="3" />
<column name="parentid" value="101"/>
<column name="ordernum" value="1"/>
</insert>


[size=large]添加了一个父级菜单用户管理,两个子集菜单账号管理和角色管理,同时在账号管理下添加两个按钮新增和修改,需要注意的是新增的授权链接是account!save.action而修改的授权链接是account!save.action,account!find.action,因为修改需要先查再能改,当用户被授予新增和修改两个权限的时候,访问account!save.action,account!find.action也就不会受阻了

[b]创建角色表和角色权限关联表[/b]
[/size]

<createTable tableName="roles">
<column name="id" type="bigint">
<constraints nullable="false" primaryKey="true" />
</column>
<column name="rolename" type="varchar(32)" />
</createTable>

<insert tableName="roles">
<column name="id" value="1" />
<column name="rolename" value="超级管理员" />
</insert>
<createTable tableName="role_permission">
<column name="id" type="bigint">
<constraints nullable="false" primaryKey="true" />
</column>
<column name="perid" type="bigint" />
<column name="roleid" type="bigint" />
</createTable>


[size=large]角色和权限是多对多的关系,一个角色可以有多个权限,一个权限也可以属于多个角色,
配完初始数据以后前台展示大致是这样的(图片太大请在新窗口打开)[/size]
[img]http://dl2.iteye.com/upload/attachment/0110/3935/d7e898bc-1efd-34b3-ab94-8f6a3f974b0d.jpg[/img]

[size=large]
拥有角色管理的的用户可以添加删除角色,同时可以为没每个角色分配权限
[b]创建用户角色关联表[/b]
[/size]

<createTable tableName="account_role">
<column name="accountid" type="bigint" />
<column name="roleid" type="bigint" />
</createTable>
<insert tableName="account_role">
<column name="accountid" value="1" />
<column name="roleid" value="1" />
</insert>

[size=large]
这里给admin初始化了id为1的角色,也就是超级管理员,同样
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值