2016.03.14
来源:互联网 发布:菲尼克斯之光 知乎 编辑:程序博客网 时间:2024/05/17 03:01
1、我知道用AOP控制权限。可以拦截用户信息,进行判断,判断登陆用户具有那些角色,然后通过角色,分给菜单。
2、简单点不和任何框架关联,用监听器监听每次访问的链接与数据库配置的权限对比,判断是否有该权限,如果有就放过,没有即提示没有访问权限。当然为了性能可以每次登录的时候直接查询账户权限将账户的的权限存放在session里面,然后每次访问直接对比session里面的权限,这样的好处是不用每次都访问数据库。
要方便点就用个Spring security吧,和spring集成挺方便也挺简单的。其他可以和SSH集成管理权限的框架也挺多
3、动态菜单是权限管理的很好体现
理解这个的重要前提:
1.了解数据库用户+权限+角色三个表之间的关系
2.掌握Hibernate作为持久层是如何加载用户的权限以及角色
SpringSecurity作为权限管理框架,其内部机制可分为两大部分,其一是认证授权auhorization,其二是权限校验authentication。
认证授权authorization是指,根据用户提供的身份凭证,生成权限实体,并为之授予相应的权限。
权限校验authentication是指,用户请求访问被保护资源时,将被保护资源所需的权限和用户权限实体所拥护的权限二者进行比对,如果校验通过则用户可以访问被保护资源,否则拒绝访问。
安全权限框架shiro ;
Java官方推荐Shiro
个人感觉shiro更简单一些,Spring Security包含的范围更广一些!
shiro的使用1简单的认证:
http://www.cnblogs.com/snidget/p/3811995.html
如果对spring框架用的比较熟建议用spring-security,如果是普通web应用自己写filter[d1] 简单省事。
SpringSecurity3
SpringSecurity,这是一种基于Spring AOP和Servlet过滤器的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。在Spring Framework基础上,Spring Security充分利用了依赖注入(DI,Dependency Injection)和面向切面技术。
菜单权限:分配给每个角色不同的菜单权限,每个角色看到的菜单不同
按钮权限:独立分配不同的角色不同的功能权限,增删改查权限分配具体到不同的菜单
SpringSecurity的整个控制过程:
——>用户登陆
——><security:authentication-manager>拦截
——>交给customUserDetailsService处理,并且声明密码采用MD5策略
——>根据输入的用户名去数据库查这条记录,验证身份
——>取出该条记录的用户权限(锁定、禁用、过期和实际权限等)
——>根据取得的权限列表去security:intercept-url匹配、授权,然后判断是否放行。
这就完成了一整个的权限控制流程。
关于数据库表的设计:
http://www.cnblogs.com/lijun4017/archive/2008/04/26/1172173.html
http://blog.sina.com.cn/s/blog_9bda308101013ddv.html
使用SpringSecurity实现权限管理:
http://hotstrong.iteye.com/blog/1160153
http://blog.csdn.net/jbjwpzyl3611421/article/details/18700653
http://www.cnblogs.com/pszw/p/3865677.html
http://kingxss.iteye.com/blog/1908011
http://wenku.baidu.com/view/f9b352f09e314332396893cd.html
【JavaEE】SSH+Spring Security搭建方法及example
http://www.w2bc.com/Article/10921
SpringSecurity(01)——初体验
http://haohaoxuexi.iteye.com/blog/2154299
Spring security3实践总结
http://kingxss.iteye.com/blog/1908011
Springsecurity例子
http://zhoshijie.iteye.com/blog/2003997
- 2016.03.14
- 2016.03.14 (SO)
- 2016.03.14回顾
- 2016.03.01
- 2016.03.02
- 2016.03.06
- 2016.03.05
- 2016.03.08
- 2016.03.09
- 2016.03.10
- 2016.03.11
- 2016.03.15
- 2016.03.23
- 2016.03.09-2016.03.10回顾
- 2016.03.11-2016.03.13回顾
- 2016.03.18-2016.03.20回顾
- 第一阶段:2015.12 - 2016.03
- Android 学习 2016.03.01
- (十)boost库之多线程
- uLua记录--UILua
- 学习笔记:Spring Bean的作用域
- iOS添加字体汇总
- Java Web开发5___jQuery 中 按钮点击事件的几种写法
- 2016.03.14
- Delphi数据类型
- (十一)boost库之多线程间通信
- 156.Evaluate the following SQL statement:
- 常用文件存储方法参考
- 2705: [SDOI2012]Longge的问题|欧拉函数
- 跟我一起学Microsoft SQL Server 2012 Internals(2.1)
- Valgrind使用说明
- ADT的配置