使用Spring Security实现权限管理

使用Spring Security实现权限管理

1、技术目标

  • 了解并创建Security框架所需数据表
  • 为项目添加Spring Security框架
  • 掌握Security框架配置
  • 应用Security框架为项目的CRUD操作绑定权限

2、权限管理需求描述

  • 为系统中的每个操作定义权限,如定义4个权限:
     1)超级权限,可以使用所有操作
     2)添加影片权限
     3)修改影片权限
     4)删除影片权限
  • 为系统设置管理员帐号、密码
  • 为系统创建权限组,每个权限组可以配置多个操作权限,如创建2个权限组:
     1)"Administrator"权限组,具有超级权限
     2)"影片维护"权限组,具有添加影片、修改影片权限
  • 可将管理员加入权限组,管理员登录后具备权限组所对应操作权限
  • 管理员可不属于某权限组,可为管理员直接分配权限

3、使用准备

3.1)在数据库中创建6张表

t_admin        管理员帐号表

t_role权限表

t_group        权限组表

t_group_role权限组对应权限表

t_group_user管理员所属权限组表

t_user_role管理员对应权限表

Sql代码 

-- ----------------------------  
    -- 创建管理员帐号表t_admin  
    -- ----------------------------  
CREATE TABLE `t_admin` (  
      `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY (`id`),  
      `passwd` VARCHAR(12) NOT NULL DEFAULT ‘‘ COMMENT ‘用户密码‘,  
      `nickname` VARCHAR(20) NOT NULL DEFAULT ‘‘ COMMENT ‘用户名字‘,  
      `phoneno` VARCHAR(32) NOT NULL DEFAULT ‘‘ COMMENT ‘电话号码‘   
    )
    -- 添加3个管理帐号   
    INSERT INTO `t_admin` VALUES (‘1‘, ‘admin‘, ‘admin‘, ‘‘);  
    INSERT INTO `t_admin` VALUES (‘4‘, ‘123456‘, ‘test‘, ‘‘);  
    INSERT INTO `t_admin` VALUES (‘5‘, ‘111111‘, ‘111111‘, ‘‘);  
    COMMIT;
    -- ----------------------------  
    -- 创建权限表t_role  
    -- ----------------------------  
 CREATE TABLE `t_role` (  
      `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY (`id`),  
      `role` VARCHAR(40) NOT NULL DEFAULT ‘‘,  
      `descpt` VARCHAR(40) NOT NULL DEFAULT ‘‘ COMMENT ‘角色描述‘,  
      `category` VARCHAR(40) NOT NULL DEFAULT ‘‘ COMMENT ‘分类‘  
    ) ENGINE=INNODB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8;
    -- ----------------------------  
     -- 加入4个操作权限  
     -- ----------------------------  
    INSERT INTO `t_role` VALUES (‘1‘, ‘ROLE_ADMIN‘, ‘系统管理员‘, ‘系统管理员‘);  
    INSERT INTO `t_role` VALUES (‘2‘, ‘ROLE_UPDATE_FILM‘, ‘修改‘, ‘影片管理‘);  
    INSERT INTO `t_role` VALUES (‘3‘, ‘ROLE_DELETE_FILM‘, ‘删除‘, ‘影片管理‘);  
    INSERT INTO `t_role` VALUES (‘4‘, ‘ROLE_ADD_FILM‘, ‘添加‘, ‘影片管理‘);
    COMMIT;
    -- ----------------------------  
    -- 创建权限组表  
    -- ----------------------------  
    CREATE TABLE `t_group` (  
      `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,  
      `groupname` VARCHAR(50) NOT NULL DEFAULT ‘‘,  
      PRIMARY KEY (`id`)  
    )
    -- ----------------------------  
    -- 添加2个权限组
    -- ----------------------------  
    INSERT INTO `t_group` VALUES (‘1‘, ‘Administrator‘);  
    INSERT INTO `t_group` VALUES (‘2‘, ‘影片维护‘);
    COMMIT;
    -- ----------------------------  
    -- 创建权限组对应权限表t_group_role  
    -- ----------------------------  
    CREATE TABLE `t_group_role` (  
      `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,  
      `groupid` BIGINT(20) UNSIGNED NOT NULL,  
      `roleid` BIGINT(20) UNSIGNED NOT NULL,  
      PRIMARY KEY (`id`),  
      UNIQUE KEY `groupid2` (`groupid`,`roleid`),  
      KEY `roleid` (`roleid`),  
      CONSTRAINT `t_group_role_ibfk_1` FOREIGN KEY (`groupid`) REFERENCES `t_group` (`id`),  
      CONSTRAINT `t_group_role_ibfk_2` FOREIGN KEY (`roleid`) REFERENCES `t_role` (`id`)  
    ) ENGINE=INNODB AUTO_INCREMENT=83 DEFAULT CHARSET=utf8;
    -- ----------------------------   
    -- 加入权限组与权限的对应关系
    -- ----------------------------  
    INSERT INTO `t_group_role` VALUES (‘1‘, ‘1‘, ‘1‘);  
    INSERT INTO `t_group_role` VALUES (‘2‘, ‘2‘, ‘2‘);  
    INSERT INTO `t_group_role` VALUES (‘4‘, ‘2‘, ‘4‘);
    COMMIT;
    -- ----------------------------  
    -- 创建管理员所属权限组表t_group_user
    -- ----------------------------   
    CREATE TABLE `t_group_user` (  
      `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,  
      `userid` BIGINT(20) UNSIGNED NOT NULL,  
      `groupid` BIGINT(20) UNSIGNED NOT NULL,  
      PRIMARY KEY (`id`),  
      KEY `userid` (`userid`),  
      KEY `groupid` (`groupid`),  
      CONSTRAINT `t_group_user_ibfk_2` FOREIGN KEY (`groupid`) REFERENCES `t_group` (`id`),  
      CONSTRAINT `t_group_user_ibfk_3` FOREIGN KEY (`userid`) REFERENCES `t_admin` (`id`)  
    ) ENGINE=INNODB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
    -- ----------------------------   
    -- 将管理员加入权限组
    -- ----------------------------  
    INSERT INTO `t_group_user` VALUES (‘1‘, ‘1‘, ‘1‘);  
    INSERT INTO `t_group_user` VALUES (‘2‘, ‘4‘, ‘2‘);
    COMMIT;
    
    -- ----------------------------  
    -- 创建管理员对应权限表t_user_role  
    -- 设置该表可跳过权限组,为管理员直接分配权限
    -- ----------------------------  
    CREATE TABLE `t_user_role` (  
      `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,  
      `userid` BIGINT(20) UNSIGNED NOT NULL,  
      `roleid` BIGINT(20) UNSIGNED NOT NULL,  
      PRIMARY KEY (`id`),  
      KEY `userid` (`userid`),  
      KEY `roleid` (`roleid`),  
      CONSTRAINT `t_user_role_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `t_admin` (`id`),  
      CONSTRAINT `t_user_role_ibfk_2` FOREIGN KEY (`roleid`) REFERENCES `t_role` (`id`)  
    ) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

3.2)在项目中新增如下jar包(security框架所需jar包):

注意:以下jar包本文已提供下载

spring-security-config-3.1.0.RC2.jar

spring-security-core-3.1.0.RC2.jar

spring-security-taglibs-3.1.0.RC2.jar

spring-security-web-3.1.0.RC2.jar

3.3)创建如下包,放置登录验证过滤器代码:

com.xxx.security

3.4)在src下创建Spring配置文件applicationContext-security.xml,内容如下:

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans:beans xmlns="http://www.springframework.org/schema/security"
  3. xmlns:b="http://www.springframework.org/schema/beans" xmlns:beans="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
  7. <!-- 这里进行配置 -->
  8. </beans:beans>

3.5)在web.xml中加入security配置,如下:

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <welcome-file-list>
  8. <welcome-file>index.jsp</welcome-file>
  9. </welcome-file-list>
  10. <context-param>
  11. <param-name>contextConfigLocation</param-name>
  12. <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
  13. </context-param>
  14. <!-- 配置Spring Security -->
  15. <filter>
  16. <filter-name>springSecurityFilterChain</filter-name>
  17. <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  18. </filter>
  19. <filter-mapping>
  20. <filter-name>springSecurityFilterChain</filter-name>
  21. <url-pattern>/*</url-pattern>
  22. </filter-mapping>
  23. <filter>
  24. <filter-name>struts2</filter-name>
  25. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  26. </filter>
  27. <filter-mapping>
  28. <filter-name>struts2</filter-name>
  29. <url-pattern>/*</url-pattern>
  30. </filter-mapping>
  31. <listener>
  32. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  33. </listener>
  34. </web-app>

4、站点根路径下创建登录页面login.jsp,代码如下:

Html代码  

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="s" uri="/struts-tags"%>
  4. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  5. <%
  6. String path = request.getContextPath();
  7. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
  8. %>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  10. <html xmlns="http://www.w3.org/1999/xhtml">
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  13. <title>后台登录</title>
  14. </head>
  15. <body onload="document.loginForm.j_username.focus();">
  16. <!-- 登录表单 -->
  17. <form name="loginForm" action="<c:url value=‘/j_spring_security_check‘/>" method="post">
  18. <!-- 登录失败后,显示之前的登录名 -->
  19. 用户名:<input type=‘text‘ name=‘j_username‘ class="txtinput"
  20. value=‘<c:if test="${not empty param.login_error}" >
  21. <c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></c:if>‘ />
  22. <br />
  23. 密码:<input type=‘password‘ name=‘j_password‘ class="txtinput" />
  24. <br />
  25. <input type="checkbox" name="_spring_security_remember_me" />
  26. &nbsp;保存登录信息
  27. <input name="submit" type="submit" value="提交" />
  28. <input name="reset" type="reset" value="重置" />
  29. </form>
  30. <br />
  31. <!-- 显示登录失败原因 -->
  32. <c:if test="${not empty param.error}">
  33. <font color="red"> 登录失败<br />
  34. <br />
  35. 原因: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" />. </font>
  36. </c:if>
  37. </body>
  38. </html>

5、站点根路径下创建注销页面loggedout.jsp,代码如下:

Html代码  

  1. <%@page session="false" %>
  2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <%@ page pageEncoding="UTF-8"%>
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
  7. %>
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  9. <html xmlns="http://www.w3.org/1999/xhtml">
  10. <head>
  11. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  12. <title>登出</title>
  13. </head>
  14. <body>
  15. 你已经退出。
  16. <a href="<c:url value=‘/login.jsp‘/>">点击这里登录</a>
  17. </body>
  18. </html>

6、站点根路径下创建HttpSession超时提示页面timeout.jsp,代码如下:

Html代码  

  1. <%@page session="false" %>
  2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
  7. %>
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  9. <html xmlns="http://www.w3.org/1999/xhtml">
  10. <head>
  11. <title>用户失效</title>
  12. </head>
  13. <body>
  14. 你的登录已经失效,请重新登录。
  15. <br />
  16. <a href="<c:url value=‘/login.jsp‘/>" >
  17. 点击这里登录</a>
  18. </body>
  19. </html>

7、在com.xxx.security包下创建登录验证过滤器,该过滤器可用于在管理员登录时进行日志记录等相关操作,包括两个类:

  • LoginUsernamePasswordAuthenticationFilter
  • LoginSuccessHandler

7.1)LoginUsernamePasswordAuthenticationFilter代码如下:

Java代码  

  1. package com.xxx.security;
  2. import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
  3. public class LoginUsernamePasswordAuthenticationFilter extends
  4. UsernamePasswordAuthenticationFilter {
  5. }

7.2)LoginSuccessHandler代码如下:

Java代码  

  1. package com.xxx.security;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.springframework.security.core.Authentication;
  7. import org.springframework.security.core.userdetails.UserDetails;
  8. import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
  9. /**
  10. * 处理管理员登录日志
  11. *
  12. */
  13. public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler{
  14. @Override
  15. public void onAuthenticationSuccess(HttpServletRequest request,
  16. HttpServletResponse response, Authentication authentication) throws IOException,
  17. ServletException {
  18. UserDetails userDetails = (UserDetails)authentication.getPrincipal();
  19. //输出登录提示信息
  20. System.out.println("管理员 " + userDetails.getUsername() + " 登录");
  21. super.onAuthenticationSuccess(request, response, authentication);
  22. }
  23. }

8、在applicationContext-security.xml中加入权限管理配置,如下:

Xml代码  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans:beans xmlns="http://www.springframework.org/schema/security"
  3. xmlns:b="http://www.springframework.org/schema/beans" xmlns:beans="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
  7. <http >
  8. <!-- 不拦截login.jsp -->
  9. <intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
  10. <!--仅拦截到manager下面的内容,具备access对应权限的-->
  11. <intercept-url pattern="/manager/**" access="ROLE_ADMIN,ROLE_UPDATE_FILM,ROLE_DELETE_FILM,ROLE_ADD_FILM" />
  12. <!-- 设置登录过滤器 -->
  13. <custom-filter before="FORM_LOGIN_FILTER" ref="authenticationProcessingFilter" />
  14. <!-- 登录表单设置 -->
  15. <form-login login-page="/login.jsp"
  16. default-target-url="/manager/films.jsp"
  17. authentication-failure-url="/login.jsp?error=true" />
  18. <!-- 登出操作后跳转到该页面 -->
  19. <logout logout-success-url="/loggedout.jsp"
  20. delete-cookies="JSESSIONID" />
  21. <remember-me />
  22. <!-- SESSION超时后跳转到该页面 -->
  23. <session-management invalid-session-url="/timeout.jsp">
  24. </session-management>
  25. </http>
  26. <authentication-manager alias="authenticationManager">
  27. <authentication-provider>
  28. <!--
  29. 直接使用SQL语句查询登录帐号对应权限,
  30. users-by-username-query:查询登录用户是否存在
  31. authorities-by-username-query:查询登录用户权限(登录用户可以不属于任何组,从t_user_role表中获取权限)
  32. group-authorities-by-username-query:查询登录用户所在组的权限
  33. -->
  34. <jdbc-user-service data-source-ref="dataSource"
  35. group-authorities-by-username-query="SELECT g.id,g.groupname,role.role
  36. FROM t_group AS g
  37. LEFT OUTER JOIN t_group_role AS grouprole ON (g.id = grouprole.groupid)
  38. LEFT OUTER JOIN t_role AS role ON (role.id = grouprole.roleid)
  39. LEFT OUTER JOIN t_group_user AS groupuser on (g.id = groupuser.groupid)
  40. LEFT OUTER JOIN t_admin ON (t_admin.id = groupuser.userid)
  41. WHERE t_admin.nickname = ?"
  42. users-by-username-query="SELECT t_admin.nickname AS username,t_admin.passwd as password,‘true‘ AS enabled
  43. FROM t_admin
  44. WHERE t_admin.nickname = ?"
  45. authorities-by-username-query="SELECT t_admin.nickname AS username,role.role as authorities
  46. FROM t_admin
  47. LEFT OUTER JOIN t_user_role AS userrole ON(t_admin.id = userrole.userid)
  48. LEFT OUTER JOIN t_role AS role ON (userrole.roleid = role.id)
  49. WHERE t_admin.nickname = ?" />
  50. </authentication-provider>
  51. </authentication-manager>
  52. <!-- 自定义消息 -->
  53. <b:bean id="messageSource"
  54. class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
  55. <b:property name="basename"
  56. value="classpath:org/springframework/security/messages" />
  57. </b:bean>
  58. <!-- 定制登录过滤器 -->
  59. <beans:bean id="loginSuccessHandler" class="com.xxx.security.LoginSuccessHandler">
  60. <b:property name="defaultTargetUrl">
  61. <!-- 登录成功后转发到该页面 -->
  62. <b:value>/manager/films.jsp</b:value>
  63. </b:property>
  64. </beans:bean>
  65. <beans:bean id="authenticationProcessingFilter" class="com.xxx.security.LoginUsernamePasswordAuthenticationFilter">
  66. <beans:property name="authenticationSuccessHandler" ref="loginSuccessHandler"></beans:property>
  67. <beans:property name="authenticationFailureHandler" ref="authenticationFailureHandler"></beans:property>
  68. <beans:property name="authenticationManager" ref="authenticationManager"></beans:property>
  69. </beans:bean>
  70. <beans:bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
  71. <beans:property name="defaultFailureUrl">
  72. <!-- 登录失败后转发到该页面 -->
  73. <beans:value>/login.jsp?error=true</beans:value>
  74. </beans:property>
  75. </beans:bean>
  76. </beans:beans>

9、为影片页面films.jsp定制操作权限,定制后,不同的帐号登录会看到不同的操作,

比如,帐号"admin"属于权限组"Administrator",具备权限"ROLE_ADMIN",登录后

可以看到所有操作,帐号"test"属于权限组"影片维护",具备权限"ROLE_UPDATE_FILM"

和"ROLE_ADD_FILM",登录后只能看到"添加影片信息"和"修改"操作

films.jsp页面权限分布图:

films.jsp代码如下:

Html代码  

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8" %>
  3. <%@taglib uri="/struts-tags" prefix="s" %>
  4. <%@ taglib prefix="security"
  5. uri="http://www.springframework.org/security/tags"%>
  6. <%
  7. String path = request.getContextPath();
  8. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  9. %>
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  11. <html>
  12. <head>
  13. <title>信息操作</title>
  14. </head>
  15. <body>
  16. <s:form action="/film/findFilm" method="post">
  17. <s:submit value=" 获取所有影片信息 "></s:submit>
  18. </s:form>
  19. <!-- 添加影片操作,登录帐号具备ROLE_ADMIN权限或者ROLE_ADD_FILM权限可以执行 -->
  20. <security:authorize ifAnyGranted="ROLE_ADMIN,ROLE_ADD_FILM">
  21. <a href="<%=basePath %>manager/insertFilm.jsp">添加影片信息</a><br />
  22. </security:authorize>
  23. <s:if test="filmList != null">
  24. <table border="1" width="40%">
  25. <tr>
  26. <th>序号</th><th>影片名</th><th>操作</th>
  27. </tr>
  28. <%-- 遍历影片信息 --%>
  29. <s:iterator var="film" value="filmList" status="st">
  30. <tr>
  31. <td><s:property value="#st.index+1" /></td>
  32. <td><s:property value="fname" /></td>
  33. <td>
  34. <!-- 修改影片操作,登录帐号具备ROLE_ADMIN权限或者ROLE_UPDATE_FILM权限可以执行 -->
  35. <security:authorize ifAnyGranted="ROLE_ADMIN,ROLE_UPDATE_FILM">
  36. <s:url id="detailUrl" value="/film/detailFilm">
  37. <s:param name="id" value="%{id}"/>
  38. </s:url>
  39. <s:a href="%{detailUrl}">[修改]</s:a>&nbsp;
  40. </security:authorize>
  41. <!-- 删除影片操作,登录帐号具备ROLE_ADMIN权限或者ROLE_DELETE_FILM权限可以执行 -->
  42. <security:authorize ifAnyGranted="ROLE_ADMIN,ROLE_DELETE_FILM">
  43. <s:url id="deleteUrl" value="/film/deleteFilm">
  44. <s:param name="id" value="%{id}"/>
  45. </s:url>
  46. <s:a href="%{deleteUrl}">[删除]</s:a>
  47. </security:authorize>
  48. </td>
  49. </tr>
  50. </s:iterator>
  51. </table>
  52. </s:if>
  53. </body>
  54. </html>
时间: 2024-10-05 04:45:28

使用Spring Security实现权限管理的相关文章

Spring Security 用于权限管理。

1:添加依赖: <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifac

Spring MVC、Mybatis、Hibernate、Bootstrap、HTML5、jQuery、Spring Security安全权限、Lucene全文检索、Ehcache分布式缓存 、高性能、高并发【Java企业通用开发平台框架】

功能特点: 1.适配所有设备(PC.平板.手机等),兼容所有浏览器(Chrome.Firefox.Opera.Safari.IE6~IE11等),适用所有项目(MIS管理信息系统.OA办公系统.ERP企业资源规划系统.CRM客户关系管理系统.网站.管理后台等). 2.快速开发,敏捷的数据持久层解决方案. 2.1.事务自动处理. 2.2.O/R Mapping基于注解,零配置XML,便于维护,学习成本低. 2.3.接口和实现分离,不需写数据持久层代码,只需写接口,自动生成添加.修改.删除.排序.分

spring boot shiro -权限管理

spring boot shiro -权限管理 定义 java最常用的框架有spring security 和Apache shiro,因为spring security 庞大和负责,一般使用都是Apache shiro. Apache shiro 是一个功能强大,灵活,开源的安全框架,它可以处理身份验证,授权,企业会话管理,加密等. shiro 易于理解和使用,一个好的框架 应该屏蔽复杂性,向外提供简单,直观的api,简化开发人员实行应用程序安全所发费的时间和精力. shiro 可以做什么:

Spring Security控制权限

Spring Security控制权限 1,配置过滤器 为了在项目中使用Spring Security控制权限,首先要在web.xml中配置过滤器,这样我们就可以控制对这个项目的每个请求了. <filter>    <filter-name>springSecurityFilterChain</filter-name>    <filter-class>org.springframework.web.filter.DelegatingFilterProxy&

Spring Boot Shiro 权限管理 【转】

http://blog.csdn.net/catoop/article/details/50520958 主要用于备忘 本来是打算接着写关于数据库方面,集成MyBatis的,刚好赶上朋友问到Shiro权限管理,就先总结下发出来了. 使用Shiro之前用在spring MVC中,是通过XML文件进行配置. 既然现在在写Spring Boot的帖子,就将Shiro应用到Spring Boot中,我本地已经完成了SpringBoot使用Shiro的实例,将配置方法共享一下. 先简单介绍一下Shiro,

十、 Spring Boot Shiro 权限管理

使用Shiro之前用在spring MVC中,是通过XML文件进行配置. 将Shiro应用到Spring Boot中,本地已经完成了SpringBoot使用Shiro的实例,将配置方法共享一下. 先简单介绍一下Shiro,对于没有用过Shiro的朋友,也算是做个简介吧. Shiro是Apache下的一个开源项目,我们称之为Apache Shiro.它是一个很易用与Java项目的的安全框架,提供了认证.授权.加密.会话管理,与 Spring Security 一样都是做一个权限的安全框架,但是与S

Bootstrap、jQuery、HTML5、Spring Security安全权限

获取[下载地址]   QQ: 313596790   [免费支持更新]A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用

jQuery、HTML5、Spring Security安全权限、Lucene全文检索

获取[下载地址]   QQ: 313596790   [免费支持更新]支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]A 代码生成器(开发利器);      增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid

Spring MVC、Mybatis、Hibernate、Bootstrap、jQuery、HTML5、Spring Security安全权限、Lucene全文检索、Ehcache分布式缓存 、高性能、高并发【Java企业通用开发平台框架】

获取[下载地址]   QQ: 313596790   [免费支持更新] A 代码生成器(开发利器);    B 阿里巴巴数据库连接池druid;   数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势 C 安全权限框架shiro ;  D ehcache 自定义二级缓存; E 微信接口开发(后续会加入Activiti5 工作流 )免费升级 -------------------------------------------------------