当前位置: 首页 > news >正文

Spring Security(笔记)

第一步:

首先使用Intellij IDEA创建一个Spring Boot项目,JDK选择自己安装的1.8。点击Next后,编辑项目信息。然后跳转到选择依赖页面。 

第二步:

添加Spring Security、Spring Web、Thymeleaf三个依赖。完成后等待项目构建完成。

Spring Web项目包含了Web项目常用的依赖:

  1. 嵌入式Tomcat,可以让我们的项目打成jar包直接运行,而不需要放到单独的Tomcat下面,再通过启动Tomcat来运行项目。

  2. Spring MVC,服务端三层架构中的视图层框架。主要用于处理页面跳转、页面请求处理等逻辑。

  3. Jackson,可以把数据转换成JSON格式,也可以把JSON格式的数据解析成对象。

Thymeleaf是一个类似于JSP页面的模板引擎,可以把静态的HTML页面变成动态变化的HTML页面。使用简单方便,性能更高,Spring官方非常推荐。

 

第三步:

项目构建完成后,在pom.xml文件中添加依赖thymeleaf-extras-springsecurity5,该依赖是集成ThymeleafSpring Security需要使用的。

<dependency><groupId>org.thymeleaf.extras</groupId><artifactId>thymeleaf-extras-springsecurity5</artifactId><version>3.0.3.RELEASE</version>
</dependency>

第四步:

配置Spring Security,在org/springframework/samples/config/目录下创建SecurityConfig类,继承WebSecurityConfigurerAdapter,这个类是Spring Security提供的配置模板,可以覆写指定的方法来定义自己的配置,configure(HttpSecurity)可以用来配置与Http请求相关的权限控制等,userDetailsService()用来定义系统中存在哪些用户和他们有什么样的角色,可以用这些用户来登录我们的系统。在这里,我定义了一个用户名为user,密码为password的用户。

// 开启Spring Security,有了这个注解,Spring就会帮助我们自动配置Spring Security。
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http// 配置要控制的http URL.authorizeRequests()// 对于静态文件和页面不拦截。.antMatchers("/css/**", "/index").permitAll()// /user/下的请求只有拥有USER角色的用户才能访问.antMatchers("/user/**").hasRole("USER")// 回到HttpSecurity.and()// 设置通过表单进行登录认证.formLogin()// 登录页名称(即login.html),登录页不需要权限控制.loginPage("/login")// 登录校验地址,点击登录按钮时会跳转到该地址.loginProcessingUrl("/loginUrl")// 登录错误页地址.failureUrl("login-error");}@Override@Beanpublic UserDetailsService userDetailsService() {UserDetails userDetails = User.withDefaultPasswordEncoder()// 用户名.username("user")// 密码.password("password")// 拥有的角色.roles("USER").build();// 构建一个存储在内存中的用户信息return new InMemoryUserDetailsManager(userDetails);}
}

antMatchers()是一个采用ANT模式的URL匹配器,*可以匹配0或者多个目录或者字符。`/css/*表示匹配/css`目录下的所有内容。

http://www.xdnf.cn/news/345619.html

相关文章:

  • 第37次CCF--机器人饲养
  • C语言自定义类型:联合与枚举详解
  • QT中的网络请求
  • Pycharm安装后打开提示:此应用无法在你的电脑上运行,若要找到合适于你的电脑的版本,请咨询发布者
  • 如何选择自己喜欢的cms
  • 【Unity中的数学】—— 四元数
  • 实时操作系统:航空电子系统的安全基石还是创新枷锁?
  • std::iota(C++)
  • 年龄估计数据集
  • 【工具推荐】Code2Prompt
  • 【HarmonyOS 5】鸿蒙页面和组件生命周期函数
  • 【软件设计师:软件工程】11.项目管理
  • C++算法(19):整数类型极值,从INT_MIN原理到跨平台开发实战
  • java每日精进 5.08【框架之数据权限补充】
  • DRAM详解
  • macOS Arduino IDE离线安装ESP8266支持包
  • 今日行情明日机会——20250508
  • day05_java中常见的运算符
  • Unity-Shader详解-其五
  • 【报错】view size is not compatible with input tensor‘s size and stride
  • 电子电器架构 --- 电气/电子架构如何发展以满足其处理和传感器融合需求
  • 图片上传的util和使用
  • CFCA受邀参加盛京银行手机银行7.0发布会
  • Kibana vs Grafana:日志分析能力深度对比与移动应用案例
  • 企业面试题综合(1)
  • SLAM文献之KernelGPA: A Globally Optimal Solution to Deformable SLAM in Closed-form
  • Kafka消息不丢失处理
  • MATLAB界面——valueChangedFcn回调和valueChanging回调
  • 数值分析——条件数
  • 04-redis