SpringBoot后台管理系统框架

SpringBoot后台管理系统框架

SpringBoot后台管理系统功能介绍

登录 注册 用户列表和添加功能

只是个框架 实现了shiro权限控制, 详细的shiro使用

一个模板项目系统 只有少量功能

使用技术
  • SpringBoot框架

  • Mysql数据库

  • redis

  • shiro权限

  • thymeleaf(前端)

功能展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

shiro权限
package com.game.app.shiro;

import com.game.app.model.system.Permission;
import com.game.app.model.system.Role;
import com.game.app.model.system.User;
import com.game.app.service.system.AuthService;
import com.game.app.service.system.UserService;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 自定义权限匹配和账号密码匹配
 */
@Service
public class MyShiroRealm extends AuthorizingRealm {

	private static final Logger logger = LoggerFactory.getLogger(MyShiroRealm.class);

	@Autowired
	private AuthService authService;

	@Autowired
	private UserService userService;

	/**
	 * 此方法调用  hasRole,hasPermission的时候才会进行回调.
	 * 权限信息.(授权):
	 * 1、如果用户正常退出,缓存自动清空;
	 * 2、如果用户非正常退出,缓存自动清空;
	 * 3、如果我们修改了用户的权限,而用户不退出系统,修改的权限无法立即生效。
	 * (需要手动编程进行实现;放在service进行调用)
	 * 在权限修改后调用realm中的方法,realm已经由spring管理,所以从spring中获取realm实例,
	 * 调用clearCached方法;
	 * :Authorization 是授权访问控制,用于对用户进行的操作授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。
	 */
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
		/*
		 * 当没有使用缓存的时候,不断刷新页面的话,这个代码会不断执行,
		 * 当其实没有必要每次都重新设置权限信息,所以我们需要放到缓存中进行管理;
		 * 当放到缓存中时,这样的话,doGetAuthorizationInfo就只会执行一次了,
		 * 缓存过期之后会再次执行。
		 */
		logger.debug("权限配置-->MyShiroRealm.doGetAuthorizationInfo()");

		// 获取当前登陆用户
		Subject subject = SecurityUtils.getSubject();
		User user = (User) subject.getPrincipal();

		// 添加权限 和 角色信息
		SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
		// 根据用户id查询用户的角色
		List<Role> roles = authService.selectRoleByUserId(user.getId());
		if (null != roles && roles.size() > 0) {
			for (Role role : roles) {
				//添加角色
				authorizationInfo.addRole(role.getRoleName());
				//根据角色查询对应权限数据
				List<Permission> permissions = authService.selectPermissionByRoleId(role.getId());
				if (null != permissions && permissions.size() > 0) {
					// 授权角色下所有权限
					for (Permission permission : permissions) {
						authorizationInfo.addStringPermission(permission.getName());
					}
				}
			}
		}
		return authorizationInfo;
	}

	/**
	 * 认证信息.(身份验证)
	 * Authentication 是用来验证用户身份
	 * 主要是用来进行身份认证的,也就是说验证用户输入的账号和密码是否正确
	 */
	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)
			throws AuthenticationException {
		logger.debug("用户登录身份认证-->MyShiroRealm.doGetAuthenticationInfo()");

		//UsernamePasswordToken用于存放提交的登录信息
		UsernamePasswordToken token = (UsernamePasswordToken)authenticationToken;
		logger.info("用户登录认证:验证当前Subject时获取到token为:" +
				ReflectionToStringBuilder.toString(token, ToStringStyle.MULTI_LINE_STYLE));

		String username = token.getUsername();
		// 调用数据层 查询用户
		User user = userService.selectByUsername(username);

		logger.debug("用户登录认证!用户信息user:" + user);
		if (user == null) {
			// 用户不存在
			return null;
		} else {
			// 密码存在

			//盐值加密: 交给AuthenticatingRealm使用CredentialsMatcher进行密码匹配,如果觉得人家的不好可以自定义实现
//			SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
//					user, //用户名
//					user.getPassword(), //密码
//					ByteSource.Util.bytes(user.getCredentialsSalt()),//salt=username+salt
//					getName()  //realm name
//			);

			//明文: 若存在,将此用户存放到登录认证info中,无需自己做密码对比,Shiro会为我们进行密码对比校验
//			SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
//					user, //用户名
//					user.getPassword(), //密码
//					getName()  //realm name
//			);

			//普通md5: Shiro会为我们进行密码对比校验
			// 第一个参数 ,登陆后,需要在session保存数据
			// 第二个参数,查询到密码(加密规则要和自定义的HashedCredentialsMatcher中的HashAlgorithmName散列算法一致)
			// 第三个参数 ,realm名字
			SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
					user, //用户
					DigestUtils.md5Hex(user.getPassword()),
					getName()  //realm name
			);
			return authenticationInfo;
		}
	}

}
运行

创建数据库, 然后修改数据库连接相关信息。

启动 SpringBoot 类的main方法

访问: http://localhost:8080/manage-demo
账号: admin 密码: 654321

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spring Boot 是一个用于构建弹性微服务的框架,可以帮助开发人员快速构建基于 Spring 技术栈的应用程序。它的后台管理系统是指使用 Spring Boot 构建的后端管理系统,可以通过网页界面管理系统的数据、用户、权限等内容。 ### 回答2: Spring Boot是一个Java开发框架,通过它可以快速、简便地构建后台管理系统。它提供了一套开发引导工具,可以帮助我们快速搭建项目的基础结构和配置,并集成了常用的开发框架和组件,例如Spring MVC、Spring Data和Spring Security等。 使用Spring Boot开发后台管理系统,我们可以省去繁琐的配置和部署过程,只需要编写少量的代码就能完成项目的搭建。它提供了自动配置的特性,能够根据我们的依赖和配置自动完成相关的设置,减少了开发的复杂度。 同时,Spring Boot还支持热部署功能,能够在不重启服务器的情况下实时更新代码和资源文件,提高开发效率。另外,它还内置了一个嵌入式的应用服务器,如Tomcat或Jetty,可以方便地进行本地开发和调试。 在以Spring Boot为基础开发后台管理系统时,我们可以通过使用Spring MVC框架来实现前后端交互,使用Spring Data框架来简化对数据库的操作,还可以使用Spring Security来进行系统的安全认证和权限控制。 总的来说,Spring Boot提供了一种快速、简便的开发方式,使得我们能够更加高效地开发后台管理系统。它的优势包括简化了开发流程、提供了自动配置和热部署功能以及集成了常用的开发框架和组件。使用Spring Boot,我们可以更加专注于业务逻辑的实现,提升开发效率和系统的可维护性。 ### 回答3: Spring Boot后台管理系统是一种基于Spring Boot框架开发的管理系统,它为开发者提供了一种快速简便的方式来搭建和开发后台管理系统Spring Boot是一个轻量级、开箱即用的Java开发框架,它能够帮助开发者快速搭建项目,并集成了许多常用的功能和组件。 Spring Boot后台管理系统具有以下特点: 1. 快速开发:Spring Boot提供了自动化配置和快速构建的功能,开发者只需要简单配置一些基本设置,就能够快速搭建一个完整的后台管理系统。 2. 简单易用:Spring Boot采用简化了的配置方式,让开发者可以更轻松地理解和使用框架。同时,它还提供了丰富的文档和教程,帮助开发者快速上手。 3. 高度可扩展性:Spring Boot提供了丰富的插件和扩展机制,可以方便地集成其他框架和组件,满足各种具体业务需求。 4. 安全可靠:Spring Boot具有基于角色的权限管理、数据加密和防止跨站请求伪造等安全功能,保障后台管理系统的安全运行。 5. 良好的性能:Spring Boot通过优化配置和使用底层技术,提供了优秀的性能和稳定性,能够应对高并发和大数据量的需求。 Spring Boot后台管理系统可用于企业内部管理、电子商务平台、人力资源管理等各种场景。开发者可以基于该框架快速搭建出功能完善、界面友好的管理系统,并灵活地满足不同业务需求。同时,Spring Boot还提供了丰富的开发工具和监控机制,方便开发者进行系统的运维和优化。总之,Spring Boot后台管理系统是一种快速、简便、高效的开发方式,广泛应用于各种企业和组织。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值