Spring security开发权限管理系统(一)
从今天起,我将使用SpringBoot+SpringBoot+Mybatis+Vue从到一开发一个系统。
今天将说明Spring Security+SpringBoot+Mybatis的结合
引入POM
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.16</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>5.1.47</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-test</artifactId><scope>test</scope></dependency></dependencies>
引入用户概念,实现登录功能
在数据库中创建数据库表
DROP TABLE IF EXISTS `system_user`;
CREATE TABLE `system_user` (`id` varchar(50) DEFAULT NULL,`username` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;SET FOREIGN_KEY_CHECKS = 1;
建立类 值得注意的是我们使用Lombok。在IDEA上需要安装lombok插件
package com.xzz.vdc.model;import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;import java.util.Collection;@Data
public class User implements UserDetails {public String id;public String username;public String password;@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {return null;}@Overridepublic boolean isAccountNonExpired() {return true;}@Overridepublic boolean isAccountNonLocked() {return true;}@Overridepublic boolean isCredentialsNonExpired() {return true;}@Overridepublic boolean isEnabled() {return true;}
}
值得注意的是,此处引入和继承了Spring Security的关于用户实体类的类,用来实现相应的功能
配置Mybatis并创建Mapper文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xzz.vdc.mapper.UserMapper"><select id="loadUserByName" resultType="com.xzz.vdc.model.User">select * from system_user where username = #{username}</select></mapper>
创建对应的
Mapper接口
package com.xzz.vdc.mapper;import com.xzz.vdc.model.User;
import org.springframework.stereotype.Repository;@Repository
public interface UserMapper {public User loadUserByName(String username);
}
项目相关配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourceusername: rootpassword: rooturl: jdbc:mysql://localhost:3306/vdc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
server:port: 9090
mybatis:mapper-locations: classpath:mappers/*Mapper.xmltype-aliases-package: com.xzz.vdc.model
继承UserDetailService,实现对于用户的查询
ackage com.xzz.vdc.service;import com.xzz.vdc.mapper.UserMapper;
import com.xzz.vdc.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;@Service
public class UserService implements UserDetailsService {@AutowiredUserMapper userMapper;@Overridepublic UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {User user = userMapper.loadUserByName(s);if (user==null){throw new UsernameNotFoundException("用户找不到");}else{return user;}}
}
在配置类中进行权限验证
package com.xzz.vdc.config;import com.xzz.vdc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {@AutowiredUserService userService;@BeanPasswordEncoder passwordEncoder(){return NoOpPasswordEncoder.getInstance();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userService);}
}
此处需要注意的是。PasswordEncoder是你所使用的密码的加密方式。。必须与你存入数据的相对应,此处我使用的NoOpPasswordEncoder是不使用加密。还可以使用BCryptPasswordEncoder等加密方式
实现上述之后,我们可以写一个测试类
@RestController
public class HelloController {@GetMapping("/hello")public String hello(){return "hello";}
}
访问测试类接口。直接转到Spring Security的登录页面。输入用户名和密码即可跳转到显示hello的hello接口页面
Spring security开发权限管理系统(一)相关推荐
- 基于Spring Security实现权限管理系统
基于Spring Security实现权限管理系统 稍微复杂一点的后台系统都会涉及到用户权限管理.何谓用户权限?我的理解就是,权限就是对数据(系统的实体类)和数据可进行的操作(增删查改)的集中管理.要 ...
- 视频教程-SpringBoot+Security+Vue前后端分离开发权限管理系统-Java
SpringBoot+Security+Vue前后端分离开发权限管理系统 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上市培训机构数年,独 ...
- SpringSecurity系列(四) Spring Security 实现权限树形菜单
SpringSecurity系列(一) 初识 Spring Security SpringSecurity系列(二) Spring Security入门 SpringSecurity系列(三) Spr ...
- Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)
技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(一):Kitty 系统介绍
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 温馨提示: 有在演示环境删除数据的童鞋们,如果可以的话,麻烦动动小指,右键头像 ...
- Spring Security进行权限控制
一.SpringSecurity介绍 简介 SpringSecurity是一个专注于java应用程序提供身份认证和授权的框架,它的强大之处在于它可以轻松扩展以满足自定义的需求 特征 – 对身份的认证和 ...
- spring之使用Spring Security实现权限管理
转载:http://hanqunfeng.iteye.com/blog/1155226 目录 SpringSecurity3.X--一个简单实现 SpringSecurity3.X--前台与后台登录认 ...
- Spring Boot + Spring Cloud 实现权限管理系统 (系统服务监控)
系统服务监控 新建监控工程 新建Spring Boot项目,取名 kitty-monitor,结构如下. 添加项目依赖 添加 spring boot admin 的相关依赖. pom.xml < ...
- Spring Security权限管理系统开发实战
源码地址 链接:https://pan.baidu.com/s/1PCr0FUYevO9VsKIwdPjnug 提取码:1b6d 课程采用目前市面上比较热门的技术Vue.Spring Boot.Spr ...
最新文章
- 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题...
- python 内置方法赋值_Python内置函数
- C++求n个字符的长度为m的组合
- error: ‘__declspec‘ attributes are not enabled; use ‘-fdeclspec‘ or ‘-fms-extensions‘ to enabl
- python 文件操作的模块_Python之文件操作修改模块
- 基本概念/MM相关概念
- python 安装包时出现红字_Python安装(Windows 7 8 10)
- qtableview设置单元格颜色_一键解锁Excel自定义单元格格式!
- 在SAP云平台ABAP编程环境上编写第一段ABAP程序
- Typora MarkDown语法笔记(一)
- iOS 地图移动中心点获取
- 【HTML】【简易电子相册】overflow:hidden;
- 5. JanusGraph Schema和数据类型
- 【轮子】有权二部图中的最大匹配、最小匹配python轮子
- Java IO:BIO和NIO区别及各自应用场景
- pcs增加mysql资源_PCS集群的一些命令总结!非常好!
- js根据文字(保存大小,字体)计算文字长度,并根据容器显示省略号
- 专业实验 I 实验报告
- centos8 安装docker
- 户外工业级4G路由器与家用WiFi路由器的区别
热门文章
- ios swiftui_ios swiftui中的本地化
- Android系统的心脏-Zygote进程启动流程分析
- 【Python之GUI开发案例】用Python的tkinter开发聚合翻译神器
- 数据之道读书笔记-03差异化的企业数据分类管理框架
- 密歇根大学最新成果:教会无人车预测行人运动趋势
- Kafka(四)- Kafka 生产者
- MIGO/CO11N 批次创建增强 自定义批次号创建规则
- VvalidationError:Invalid options object.Ignore Plugin has been initialized using an options object
- eclipse配置python开发环境_Eclipse配置Python的环境
- 动态设置html样式或style具体属性