04SpringSecurity

本文详细介绍Spring Security的安全配置步骤,包括web.xml中的过滤器配置、Spring Security XML文件中的认证管理器设置、登录页面及权限控制规则等。此外还介绍了如何处理CSRF攻击和iframe页面的访问控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringSecurity安全框架

  1. 在web.xml中配置过滤器   和上下文加载.xml文件
  	 <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-security.xml</param-value>
	 </context-param>
	 <listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	 </listener>	
	 <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>	
</web-app>
  1. 在.xml文件中配置页面拦截规则
  2. SpringSecurity默认  access前必须以ROLE开头  access=“ROLE_USER”
  3. 配置认证管理器
  4. form-login为开启表单登录
  5. <http pattern="/login.html"  security="none"></http>  设置页面不被拦截
  6. login-page:指定登录页面。
    authentication-failure-url:指定了身份验证失败时跳转到的页面。
    default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。

    csrf disabled="true"  关闭csrf ,如果不加会出现错误

  7. CSRFCross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用

  8. springSecurity默认拦截框架页   项目中使用了iframe所以应设置  <frame-options policy="SAMEOPTION"/>就不会拦截框架页了

  9. 默认登录路径为/login   退出为/logout

  10. <!-- 以下页面不被拦截 -->
    	<http pattern="/login.html" security="none"></http>
    	<http pattern="/css/**" security="none"></http>
    	<http pattern="/img/**" security="none"></http>
    	<http pattern="/js/**" security="none"></http>
    	<http pattern="/plugins/**" security="none"></http>
    	
    	<!-- 页面拦截规则 -->
    	<http use-expressions="false">
    		<intercept-url pattern="/*" access="ROLE_ADMIN" />
    		<form-login login-page="/login.html"  default-target-url="/admin/index.html" authentication-failure-url="/login.html" always-use-default-target="true"/>	
    		<csrf disabled="true"/>
    		<headers>
    			<frame-options policy="SAMEORIGIN"/>
    		</headers>
    	</http>
    
    	<!-- 认证管理器 -->
    	<authentication-manager>
    		<authentication-provider>
    			<user-service>
    				<user name="admin" password="123456" authorities="ROLE_ADMIN"/>
    				<user name="sunwukong" password="dasheng" authorities="ROLE_ADMIN"/>
    			</user-service>		
    		</authentication-provider>	
    	</authentication-manager>
    

    authentication认证

  11. 后端控制层获取当前登录用户名  String name=SecurityConetxtHolder.getContext().getAuthentication().getName()

  12. 可以设置认证类   其中使用框架自带方法  new SimpleGrantedAuthority("ROLE_SELLER")

  13. 在.xml文件中配置

  14. 项目中整体思路  先在web.xml中配置过滤器    和加载SpringSecurity.xml文件   然后在SpringSecurity.xm文件中配置认证管理器 和认证类   该放行的放行 

  15. 在认证类中通过SecurityContextLoader.getConetext().getAuthentication().getName()获取当前登录名    

  16. 根据用户名查询数据库如果有返回用户信息否则返回空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值