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. TML转义字符:xss攻击与HTML字符的转义和反转义

    xss与转义符 xss简单来说: XSS 攻击是页面被注入了恶意的代码 XSS 漏洞是 可以让攻击者注入恶意代码可执行的漏洞 具体参看之前写的: web开发前端安全问题总结--web前端安全问题汇总  ...

  2. 乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具

    上个月,Seal 软件供应链防火墙 v0.2(以下简称"Seal")正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力. 在前 ...

  3. 对话 BitSail Contributor | 刘啸:参与开源,提升自我技术力

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 2022 年 10 月,字节跳动 BitSail 数据引擎正式开源.同期,社区推出 Contributor 激励计 ...

  4. Java 轻量开发框架 Solon 1.4.4 发布 ,完善分布式任务规范

    Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...

  5. schedule 定时运行 Python 函数

    安装 pip install schedule 例子 每x分钟运行一次 import schedule import time def job(): print("I'm working.. ...

  6. Mysql--编译安装5.7版本

    1 安装环境 1)清除以往mysql残留痕迹(新机不用) yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y userdel ...

  7. L2-018 多项式A除以B (25 分) (math)

    这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B.每行的 ...

  8. 【SpringBoot】 启动后会调用执行的方法的 (五种方式)

    在 SpringBoot 工程 启动后, 会调用执行方法的五种方式: 亲自测试, 按照执行顺序如下: 第一种: @Component public class SpringContext1 { @Po ...

  9. 图扑 HT for Web 风格属性手册教程

    图扑软件明星产品 HT for Web 是一套纯国产化独立自主研发的 2D 和 3D 图形界面可视化引擎.HT for Web(以下简称 HT)图元的样式由其 Style 属性控制,并且不同类型图元的 ...

  10. html5离线存储manifest

    https://www.bilibili.com/video/BV1Up4y1t7pV?p=5