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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值