从今天起,我将使用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开发权限管理系统(一)相关推荐

  1. 基于Spring Security实现权限管理系统

    基于Spring Security实现权限管理系统 稍微复杂一点的后台系统都会涉及到用户权限管理.何谓用户权限?我的理解就是,权限就是对数据(系统的实体类)和数据可进行的操作(增删查改)的集中管理.要 ...

  2. 视频教程-SpringBoot+Security+Vue前后端分离开发权限管理系统-Java

    SpringBoot+Security+Vue前后端分离开发权限管理系统 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上市培训机构数年,独 ...

  3. SpringSecurity系列(四) Spring Security 实现权限树形菜单

    SpringSecurity系列(一) 初识 Spring Security SpringSecurity系列(二) Spring Security入门 SpringSecurity系列(三) Spr ...

  4. Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)

    技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...

  5. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(一):Kitty 系统介绍

    在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 温馨提示: 有在演示环境删除数据的童鞋们,如果可以的话,麻烦动动小指,右键头像 ...

  6. Spring Security进行权限控制

    一.SpringSecurity介绍 简介 SpringSecurity是一个专注于java应用程序提供身份认证和授权的框架,它的强大之处在于它可以轻松扩展以满足自定义的需求 特征 – 对身份的认证和 ...

  7. spring之使用Spring Security实现权限管理

    转载:http://hanqunfeng.iteye.com/blog/1155226 目录 SpringSecurity3.X--一个简单实现 SpringSecurity3.X--前台与后台登录认 ...

  8. Spring Boot + Spring Cloud 实现权限管理系统 (系统服务监控)

    系统服务监控 新建监控工程 新建Spring Boot项目,取名 kitty-monitor,结构如下. 添加项目依赖 添加 spring boot admin 的相关依赖. pom.xml < ...

  9. Spring Security权限管理系统开发实战

    源码地址 链接:https://pan.baidu.com/s/1PCr0FUYevO9VsKIwdPjnug 提取码:1b6d 课程采用目前市面上比较热门的技术Vue.Spring Boot.Spr ...

最新文章

  1. 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题...
  2. python 内置方法赋值_Python内置函数
  3. C++求n个字符的长度为m的组合
  4. error: ‘__declspec‘ attributes are not enabled; use ‘-fdeclspec‘ or ‘-fms-extensions‘ to enabl
  5. python 文件操作的模块_Python之文件操作修改模块
  6. 基本概念/MM相关概念
  7. python 安装包时出现红字_Python安装(Windows 7 8 10)
  8. qtableview设置单元格颜色_一键解锁Excel自定义单元格格式!
  9. 在SAP云平台ABAP编程环境上编写第一段ABAP程序
  10. Typora MarkDown语法笔记(一)
  11. iOS 地图移动中心点获取
  12. 【HTML】【简易电子相册】overflow:hidden;
  13. 5. JanusGraph Schema和数据类型
  14. 【轮子】有权二部图中的最大匹配、最小匹配python轮子
  15. Java IO:BIO和NIO区别及各自应用场景
  16. pcs增加mysql资源_PCS集群的一些命令总结!非常好!
  17. js根据文字(保存大小,字体)计算文字长度,并根据容器显示省略号
  18. 专业实验 I 实验报告
  19. centos8 安装docker
  20. 户外工业级4G路由器与家用WiFi路由器的区别

热门文章

  1. ios swiftui_ios swiftui中的本地化
  2. Android系统的心脏-Zygote进程启动流程分析
  3. 【Python之GUI开发案例】用Python的tkinter开发聚合翻译神器
  4. 数据之道读书笔记-03差异化的企业数据分类管理框架
  5. 密歇根大学最新成果:教会无人车预测行人运动趋势
  6. Kafka(四)- Kafka 生产者
  7. MIGO/CO11N 批次创建增强 自定义批次号创建规则
  8. VvalidationError:Invalid options object.Ignore Plugin has been initialized using an options object
  9. eclipse配置python开发环境_Eclipse配置Python的环境
  10. 动态设置html样式或style具体属性