Spring Security 安全认证框架入门

Spring Security 安全认证框架入门

应用场景

包括但不限于登录验证 用户权限管理

如何使用

下面搭一个demo入门案例(idea创建)完全不用写java类

1:使用骨架创建maven-webapp工程
> <?xml version="1.0" encoding="UTF-8"?>

<!--配置未登录放行的页面资源-->
<security:http pattern="/login.jsp" security="none"></security:http>
<security:http pattern="/failer.jsp" security="none"></security:http>

<!--配置拦截资源的规则
auto-config="true" 应用框架的默认配置
use-expressions="false" 关闭表达式的应用
intercept-url pattern="/**" 拦截的请求路径
access="ROLE_ADMIN  允许访问的角色   注意必须ROLE开头的字符串角色
-->
<security:http auto-config="true" use-expressions="false">
	<security:intercept-url pattern="/**" access="ROLE_ADMIN"></security:intercept-url>

	<!--添加自定义登录的处理节点-->
	<security:form-login default-target-url="/index.jsp"
						    authentication-failure-url="/failer.jsp"
						    login-processing-url="/login" login-page="/login.jsp"></security:form-login>

	<!--处理登录没有权限的问题-->
	<security:access-denied-handler error-page="/403.jsp"></security:access-denied-handler>
	<!--关闭伪造跨域请求的拦截-->
	<security:csrf disabled="true"></security:csrf>

</security:http>

<!--验证能否访问的节点-->
<security:authentication-manager>
	<security:authentication-provider>
		<!--使用业务类验证是否可以登录是否拥有权限-->
		<security:user-service>
			<!--初始化测试使用的两个账号 并且赋予角色
			{noop} 表示密码为明文密码匹配 原始密码 123456
			                 密文密码   加密后密码 f34kJFA*34_34FAfdfd
			-->
			<security:user name="admin" password="{noop}admin" authorities="ROLE_ADMIN"></security:user>
			<security:user name="user" password="{noop}user" authorities="ROLE_USER"></security:user>
		</security:user-service>
	</security:authentication-provider>
</security:authentication-manager>
2:在resource下创建 security.xml `` <?xml version="1.0" encoding="UTF-8"?>
<!--配置未登录放行的页面资源-->
<security:http pattern="/login.jsp" security="none"></security:http>
<security:http pattern="/failer.jsp" security="none"></security:http>

<!--配置拦截资源的规则
auto-config="true" 应用框架的默认配置
use-expressions="false" 关闭表达式的应用
intercept-url pattern="/**" 拦截的请求路径
access="ROLE_ADMIN  允许访问的角色   注意必须ROLE开头的字符串角色
-->
<security:http auto-config="true" use-expressions="false">
	<security:intercept-url pattern="/**" access="ROLE_ADMIN"></security:intercept-url>

	<!--添加自定义登录的处理节点-->
	<security:form-login default-target-url="/index.jsp"
						    authentication-failure-url="/failer.jsp"
						    login-processing-url="/login" login-page="/login.jsp"></security:form-login>

	<!--处理登录没有权限的问题-->
	<security:access-denied-handler error-page="/403.jsp"></security:access-denied-handler>
	<!--关闭伪造跨域请求的拦截-->
	<security:csrf disabled="true"></security:csrf>

</security:http>

<!--验证能否访问的节点-->
<security:authentication-manager>
	<security:authentication-provider>
		<!--使用业务类验证是否可以登录是否拥有权限-->
		<security:user-service>
			<!--初始化测试使用的两个账号 并且赋予角色
			{noop} 表示密码为明文密码匹配 原始密码 123456
			                 密文密码   加密后密码 f34kJFA*34_34FAfdfd
			-->
			<security:user name="admin" password="{noop}admin" authorities="ROLE_ADMIN"></security:user>
			<security:user name="user" password="{noop}user" authorities="ROLE_USER"></security:user>
		</security:user-service>
	</security:authentication-provider>
</security:authentication-manager>
3: 将security.xml 引入到web.xml中 `` <?xml version="1.0" encoding="UTF-8"?>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!--监听器启动加载springSecurity的配置文件-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:security.xml</param-value>
</context-param>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

如何拓展该框架

1:英文还一般  使用chrome的自动翻译可以看懂  https://spring.io/projects/spring-security
2:完全不会:先去查字典 了解高频的词汇  否则连类都不认识 更不用说自定义权限管理
3:本篇只有入门 深入了解留言 后续更新

框架原理解析

1  tomcat启动-》加载web.xml,配置security过滤器
2:浏览器输入地址-》服务器根据security.xml中的(springSecurityFilterChain)判断是否拦截
3:如果拦截 查看用户名密码 【表单中的<name,输入内容>】  注意必须使用post提交表单 否则失败
4:通过认证,跳转security.xml中配置的成功页面 否则去失败页面

后话:入门案例完全可以通过自定义filter完成本demo内容

框架本身支持加密 用户授权 权限管理 等多种 如果持续更新会做一些demo放在github上 欢迎下载使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security 是一个强大且灵活的认证和授权框架,用于保护 Spring Boot 应用程序的安全性。下面是一个简单的入门指南,帮助你开始使用 Spring Security: 1. 添加 Spring Security 依赖:在你的项目的 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 2. 创建一个 Spring Security 配置类:创建一个类并注解为 `@Configuration`,这个类将用于配置 Spring Security。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/public").permitAll() // 允许访问公共资源 .anyRequest().authenticated() // 其他请求需要认证 .and() .formLogin() // 启用表单登录 .and() .logout() // 启用注销功能 .and() .csrf().disable(); // 禁用 CSRF(跨站请求伪造)保护 } } ``` 在上述示例中,我们配置了一些基本的安全规则。可以自定义更多的规则来满足你的需求,比如配置自定义登录页面、添加用户角色等。 3. 添加用户认证:在上述配置类中,可以添加一个内存用户存储来进行简单的用户认证。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth .inMemoryAuthentication() .withUser("admin") .password("{noop}password") // 使用 {noop} 前缀表示不加密密码 .roles("ADMIN"); } } ``` 在上述示例中,我们创建了一个用户名为 "admin"、密码为 "password"、角色为 "ADMIN" 的用户。 这只是 Spring Security入门指南,你可以进一步学习如何使用数据库存储用户信息、配置角色权限等。希望这些信息对你有所帮助!如果你有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值