SpringBoot建项目步骤

建表

新建项目

(package name可以自定义,整个项目只能在该包下)

选择可能有到的依赖

(别忘了勾选SQL中的Mybatis Framework,创建项目

如果没有勾选mybatis框架,就需要手动加下面代码

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>

配置数据源

将resources中的application.properties改成application.yaml并添加以下代码

spring:
datasource:
url: jdbc:mysql://localhost:3306/book_manage
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver mvc:(如果html里的静态资源路径没有static就不需要像这样配置,只是这套模板路径有static比特殊)
static-path-pattern: /static/** mail:
host: smtp.163.com(邮箱网站的smtp)
username: 发送者用户邮箱
password: 邮箱开启smtp和pop功能后会返回一串密码 redis:(如果redis在本地则不需要配置)
host:localhost:8080

创建三层

实体类、mapper(根据用户名获取密码)、service、config

@Data
public class AuthUser {
private String username;
private String role;
private String password;
}
@Mapper
public interface UserMapper {
@Select("select * from users where username = #{username}")
AuthUser getPasswordByUsername(String username);
}
@Service
public class UserAuthService implements UserDetailsService { @Resource
UserMapper mapper; @Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
AuthUser user = mapper.getPasswordByUsername(s); //从数据库根据用户名获取密码
if(user == null)
throw new UsernameNotFoundException("登录失败,用户名或密码错误!");
return User //这里需要返回UserDetails,SpringSecurity会根据给定的信息进行比对
.withUsername(user.getUsername())
.password(user.getPassword()) //直接从数据库取的密码
.roles(user.getRole()) //用户角色
.build();
} }
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Resource
UserAuthService service;
@Resource
DataSource dataSource; // 配置TokenRepository
@Bean
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
tokenRepository.setDataSource(dataSource);
// tokenRepository.setCreateTableOnStartup(true); //启动时自动创建用于存储Token的表(第一次启动之后注释该行,否则报错)
return tokenRepository;
} @Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login").permitAll()
.anyRequest().hasAnyRole("user","admin")
.and()
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/doLogin")
.permitAll()
.defaultSuccessUrl("/index",true)
.and()
.rememberMe()
.rememberMeParameter("remember") //若登录表单提交remenber信息,则会被记住
.tokenRepository(persistentTokenRepository()) //存储记住我的token
.tokenValiditySeconds(60 * 60 * 24 * 7) //Token的有效时间(秒)默认为14天,这里设置改为7天
//先禁用防止跨站脚本攻击的csrf token,选择型开启
.csrf()
.disable()
.cors(); //跨域时需要
} @Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(service)
.passwordEncoder(new BCryptPasswordEncoder());
}
}

基于spring security创建基本项目框架的更多相关文章

  1. 基于Spring Security 的JSaaS应用的权限管理

    1. 概述 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源.资源包括访问的页面,访问的数据等,这在传统的应用系统中比较常见.本文介绍的则是基于Saas系统 ...

  2. 基于spring security 实现前后端分离项目权限控制

    前后端分离的项目,前端有菜单(menu),后端有API(backendApi),一个menu对应的页面有N个API接口来支持,本文介绍如何基于spring security实现前后端的同步权限控制. ...

  3. spring security 权限安全认证框架-入门(一)

    spring security 概述: Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架.它是保护基于spring的应用程序的实际标准. Spring Security ...

  4. 【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

    贼烦的是,使用spring boot 创建web项目,然后我再idea下创建的,but 仅仅启动spring boot的启动类,就算整个项目都是好着的,就算是能够进入controller中,也不能成功 ...

  5. 带你手写基于 Spring 的可插拔式 RPC 框架(一)介绍

    概述 首先这篇文章是要带大家来实现一个框架,听到框架大家可能会觉得非常高大上,其实这和我们平时写业务员代码没什么区别,但是框架是要给别人使用的,所以我们要换位思考,怎么才能让别人用着舒服,怎么样才能让 ...

  6. Spring Security 之API 项目安全验证(基于basic-authentication)

    ===================================Basic Authorization 规范===================================Request ...

  7. 基于Spring Security和 JWT的权限系统设计

    写在前面 关于 Spring Security Web系统的认证和权限模块也算是一个系统的基础设施了,几乎任何的互联网服务都会涉及到这方面的要求.在Java EE领域,成熟的安全框架解决方案一般有 A ...

  8. 使用spring initialization创建SpringBoot项目

    https://blog.csdn.net/liutong123987/article/details/79385513 有很多方法可以快速创建Springboot项目,可以通过idea的spring ...

  9. 带你手写基于 Spring 的可插拔式 RPC 框架(二)整体结构

    前言 上一篇文章中我们已经知道了什么是 RPC 框架和为什么要做一个 RPC 框架了,这一章我们来从宏观上分析,怎么来实现一个 RPC 框架,这个框架都有那些模块以及这些模块的作用. 总体设计 在我们 ...

  10. 基于mpvue搭建小程序项目框架

    简介: mpvue框架对于从没有接触过小程序又要尝试小程序开发的人员来说,无疑是目前最好的选择.mpvue从底层支持 Vue.js 语法和构建工具体系,同时再结合相关UI组件库,便可以高效的实现小程序 ...

随机推荐

  1. CentOS7与centOS8的抉择

    目前国内各大云服务器的默认centos 系统版本还是7,vultr,centos只有8了 官网,下载,默认也是8,作为本地主机玩的服务器,还是试一下centos8 国外下载之前版本,下载链接: 官网默 ...

  2. [BitSail] Connector开发详解系列四:Sink、Writer

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 Sink Connector BitSail Sink Connector交互流程介绍 Sink:数据写入组件的生 ...

  3. Solon 框架,想要使用 http2 怎么办?

    要使用支持 http2 的插件:solon.boot.undertow (目前,只有它支持),然后通过代码启用: @SolonMain public class SeverDemo { public ...

  4. 在低代码开发平台 ILLA Cloud 中使用 Hugging Face 上的模型

    ILLA Cloud 是一个面向开发者的开源低代码开发平台,平台专注于帮助开发者快速建立企业内部应用,为开发者节约数据调用与页面设计的时间.平台具有面向开发者.数据整合.协同开发.灵活部署等功能与特点 ...

  5. BBS项目(一):BBS需求分析 数据表设计 注册登录功能实现

    目录 BBS需求分析 数据表设计 注册页面前端 上传头像 提交数据 FormData 注册后端逻辑 接受参数 验证参数 数据入库 密码加盐操作 返回数据 登录页面前端 生成验证码 前端提交数据 登录后 ...

  6. Java 并发编程之 JMM & volatile 详解

    本文从计算机模型开始,以及CPU与内存.IO总线之间的交互关系到CPU缓存一致性协议的逻辑进行了阐述,并对JMM的思想与作用进行了详细的说明.针对volatile关键字从字节码以及汇编指令层面解释了它 ...

  7. xapian 搜索引擎介绍与使用入门

    Xapian 是一个开源搜索引擎库,使用 C++ 编写,并提供绑定(bindings )以允许从多种编程语言使用.它是一个高度适应性的工具包,允许开发人员轻松地将高级索引和搜索功能添加到自己的应用程序 ...

  8. vue用qrcodejs2生成二维码,解决多个二维码追加的问题

    vue使用qrcodejs2生成二维码 1.安装qrcodejs2 npm install qrcodejs2 2.代码 //导入组件 import QRCode from 'qrcodejs2' / ...

  9. DDD领域驱动设计 (C# 整理自“老张的哲学”)

    大话DDD领域驱动设计 概念 Domain Driven Design 领域驱动设计 第一个D(Domain): 领域:指围绕业务为核心而划分的实体模块. 第二个D(Driven): 驱动:这里的驱动 ...

  10. java基础-常用类-day11

    目录 1. 包装类 2. Integer类 3.util.date 4. java.sql.Date 5. SimpleDateFormat 6. Calendar 7. Math 8. String ...