权限管理系统 Spring-authority

是由 spring+springmvc+hibernate+spring-security +easyui +boostrap 写的一个框架集合,目前实现了一个基础的权限管理系统,权限是基于细粒度的过滤,对于初学权限设计的人来说也算是个最简洁的权限实现,基于它来做项目,它只是做了一些绝大部分项目都应该做的一些基础功能。

1参考资料

http://blog.csdn.net/k10509806/article/details/6369131

http://www.cnblogs.com/wenxiu/archive/2011/01/22/1942084.html

http://ootabc.iteye.com/blog/688213

http://wenku.baidu.com/view/abf23846336c1eb91a375d83.html

http://www.cnblogs.com/zhangliang0115/archive/2012/04/02/2429584.html

http://aokunsang.iteye.com/blog/1638558

2.数据库建表

采用基于角色-资源-用户-权限管理设计。

2.1.权限表    sys_authorities

2.2.权限资源表    sys_authorities_resources

2.3.菜单表    sys_menus

2.4.资源表   sys_resources

2.4.角色菜单表   sys_role_menu

2.5 角色表   sys_roles

2.5 角色权限表    sys_roles_anthorities

2.6  用户表   sys_users

2.6  用户角色表   sys_users_roles:

3.梳理资料,整理思路

3.1.Spring Security3.1的2种常见方式

1.  用户信息和权限存储于数据库,而资源和权限的对应采用硬编码配置。

2.  细分角色和权限,并将角色、用户、资源、权限均都存储于数据库中。并且自定义过滤器,代替原来的FilterSecurityInterceptor过滤 器;并分别实现AccessDecisionManager、UserDetailsService和 InvocationSecurityMetadataSourceService,并在配置文件中进行相应配置。

4.代码整理

接下来开始着手代码编写,不管是两种实现方式中的哪种方式,个人感觉都需要把加载用户信息放在一个类里面管理,直观方便,结构清晰,不要用在配置文件直接写sql语句。

4.1.资源和权限对应写在配置文件中

1、     web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
	<display-name></display-name>

	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/log4j.properties</param-value>
	</context-param>
	<context-param>
		<param-name>log4jRefreshInterval</param-name>
		<param-value>600000</param-value>
	</context-param>
	<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>webPath</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:applicationContext.xml</param-value>
	</context-param>
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>/WEB-INF/jsp/common/login.jsp</welcome-file>
	</welcome-file-list>
	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>
</web-app>

Xml代码  
  2、  application-security.xml文件的配置。application-servlet.xml配置不懂的参考spring MVC搭建全程。

Java代码  收藏代码

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       xmlns:beans="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/security
       http://www.springframework.org/schema/security/spring-security.xsd">

    <security:http security="none" pattern="/public/**"/>
    <security:http security="none" pattern="/login*"/>
    <security:http security="none" pattern="/maxSessionError*"/>
    <security:http security="none" pattern="/forbidden*"/>
    <security:http use-expressions="true">
        <security:intercept-url pattern="/**" access="isAuthenticated()"/>
        <security:form-login login-page="/login"
                             default-target-url="/home"
                             authentication-failure-url="/login"
                             authentication-success-handler-ref="loginSuccessHandler"
        />
        <security:logout  invalidate-session="true"  delete-cookies="true" success-handler-ref="logoutSuccessHandler" />
        <security:access-denied-handler error-page="/forbidden"/>
        <security:session-management session-fixation-protection="newSession" >
            <security:concurrency-control max-sessions="1" error-if-maximum-exceeded="false"  expired-url="/maxSessionError" />
        </security:session-management>

        <security:custom-filter ref="myFilter" before="FILTER_SECURITY_INTERCEPTOR" />
    </security:http>

    <!--用户权限管理-->
    <security:authentication-manager alias="authenticationManager"  >
        <security:authentication-provider user-service-ref="userInfoProvider" >
            <security:password-encoder hash="md5" base64="true"/>
        </security:authentication-provider>
    </security:authentication-manager>

    <!--过滤器-->
    <beans:bean id="myFilter" class="com.authority.filter.MyFilterSecurityInterceptor">
        <beans:property name="authenticationManager" ref="authenticationManager"/>
        <beans:property name="accessDecisionManager"  ref="myAccessDesisionmanager"/>
        <beans:property name="securityMetadataSource" ref="mySecurityMetadataSource"/>
    </beans:bean>

    <!--访问决策-->
    <bean id="myAccessDesisionmanager" class="com.authority.filter.MyAccessDesisionmanager" />

    <!--用户信息Provider-->
    <bean id="userInfoProvider" class="com.authority.service.impl.UserInfoServiceImpl" />

    <!--登陆成功-->
    <bean id="loginSuccessHandler" class="com.authority.handler.MyLoginSuccessHandler" />
    <!--退出登录-->
    <bean id="logoutSuccessHandler" class="com.authority.handler.MyLogoutSuccessHandler" />

    <!--系统资源管理-->
    <bean id="mySecurityMetadataSource" class="com.authority.filter.MySecurityMetadataSource" >
    </bean>

    <!--登陆失败-->
    <bean id="loginFailHandler" class="com.authority.handler.MyLoginFailHandler"/>

</beans>

1.系统实现了基于URL的权限管理,页面操作控制到按钮级别,根据权限配置进行显示,并在拦截器再次认证,只有分配权限后才能进行操作

页面效果图:

源码分享:

http://git.oschina.net/gz-tony/spring-authority/

时间: 2024-08-24 00:43:04

权限管理系统 Spring-authority的相关文章

SpringMVC+Spring Data JPA+Shiro+EasyUI简单权限管理系统

SpringMVC+Spring Data JPA+Shiro+EasyUI简单权限管理系统 一直想做一个管理系统,希望它简洁,能做一个demo使用.以后在研究学习的时候,可以在此基础上增加代码.我觉得权限管理系统很值得做,因为涉及关系数据库模式的设计,能学到很多东西.万事开头难,先做个简单的,以后再慢慢完善的.任何事情关键是要做,不能停留在想. 前端 由于之前没有多少前端编程经验,所以做起前端比较吃力.之前前端使用Bootstrap,发现需要自己编写很多前端代码,虽然花费了很多时间,但是页面做

分享一套MVC4+EF5+EasyUI技术实现通用权限管理系统

课程讲师:闲筝 课程分类:.NET框架 适合人群:高级 课时数量:150课时 更新程度:完毕 服务类型:B类(VIP服务类课程) 用到技术:MVC.EF.T4.Log4net.EasyUI.rdlc.spring.net等 涉及项目:通用权限管理系统.十二生肖案例.EasyUI150项示例 课程咨询QQ:2050339477 链接:http://ibeifeng.taobao.com/index.htm?spm=2013.1.w5002-9616636101.2.aNEcLW 项目背景: 自从微

轻量级权限管理系统(renren-security)

renren-security是一个轻量级权限管理系统,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.使用renren-security搭建项目,只需编写30%左右代码,其余的代码交给系统自动生成.一个月的工作量,一周就能完成,剩余的时间可以陪家人.朋友.撩妹.钓凯子等,从此踏入高富帅.白富美行业. 具有如下特点 轻量级的权限系统,只涉及Spring.Shiro.Mybatis后端框架,降低学习使用成本 友好的代码结构及注释,便于阅读及二次开发 支持HTML.JSP.Velocity.Fr

基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus、HignCharts、Reportviewer报表)视频教程

基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus.HignCharts.Reportviewer报表)视频教程 联系QQ:1026270010 1.项目研发环境 项目源代码会提供以MVC4+EF5和MVC5+EF6为基准的两套版本,数据库会提供以Sqlserver2005为基准的数据库脚本,以下环境都适用于项目. 开发工具:VS2012,VS2013; 数据库工具:SqlServer2005,2008,2012,2014    其他工具:Easyui,Jquery,EpP

renren-security(轻量级权限管理系统)

项目说明 renren-security是一个轻量级权限管理系统,其核心设计目标是开发迅速.学习简单.轻量级.易扩展 使用renren-security搭建项目,只需编写30%左右代码,其余的代码交给系统自动生成 一个月的工作量,一周就能完成,剩余的时间可以陪家人.朋友.撩妹.钓凯子等,从此踏入高富帅.白富美行业 具有如下特点 轻量级的权限系统,只涉及Spring.Shiro.Mybatis后端框架,降低学习使用成本 友好的代码结构及注释,便于阅读及二次开发 支持HTML.JSP.Velocit

零基础到CS开发高手通用权限管理系统全程实录

零基础到CS开发高手通用权限管理系统全程实录(Devexpress.FastReport.NET.WebService.智能客户端)课程讲师:闲筝课程分类:.NET框架适合人群:中级课时数量:70课时更新程度:80%用到技术:Devexpress.FastReport.NET.WebService.智能客户端涉及项目:通权系统.智能客户端.报表设计器咨询qq:1840215592 详细介绍:http://www.ibeifeng.com/goods-493.html项目主要功能模块:闲筝老师的.

ORM框架SQLAlchemy与权限管理系统的数据库设计

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用对象关系映射进行数据库操作,即:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. 执行流程: 1.使用者通过ORM对象提交命令 2.将命令交给SQLAlchemy Core(Schema/Types SQL Expression Language)转换成SQL 3.使用 Engine/ConnectionPooling/Dialect 进行数据库操作 4.匹配使用者事先配置好的egin

Java开发企业级权限管理系统课程 电商权限管理系统视频教程 共18章

第1章 课程整体概述(2018配套教程:电商前端+电商后端+电商权限管理系统课程) 本章首先介绍为什么大公司都有权限管理系统,然后会对权限管理中流行的RBAC模型及拓展做重点说明,并给出理想中的权限管理系统应该是什么样子的.之后会对这门课程做总体内容介绍与课程安排,最后会介绍这门课程会涉及到的技术,让大家明确了解到这门课程到底能收获些什么(课程提供QQ交流群).... 第2章 Spring Security权限框架理论与实战演练 本章首先让大家学习到Spring Security权限框架的架构,

Java开发企业级权限管理系统 视频教程

第1章 课程整体概述与权限管理系统介绍 1-1 为什么企业级项目需要权限管理 1-2 权限管理的核心是什么? 1-3 理想中的权限管理应该是什么样的? 1-4 主流开源权限管理框架有哪些? 1-5 1-6课程安排与知识点介绍第2章 Spring Security权限框架学习与演练 2-1 Spring Security权限管理框架介绍 2-2 Spring Security常用权限拦截器讲解 2-3 Spring Security数据库管理讲解 2-4 Spring Security权限缓存讲解