SpringSecurity安全框架
- 在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>
- 在.xml文件中配置页面拦截规则
- SpringSecurity默认 access前必须以ROLE开头 access=“ROLE_USER”
- 配置认证管理器
- form-login为开启表单登录
- <http pattern="/login.html" security="none"></http> 设置页面不被拦截
-
login-page:指定登录页面。
authentication-failure-url:指定了身份验证失败时跳转到的页面。
default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。csrf disabled="true" 关闭csrf ,如果不加会出现错误
-
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用
-
springSecurity默认拦截框架页 项目中使用了iframe所以应设置 <frame-options policy="SAMEOPTION"/>就不会拦截框架页了
-
默认登录路径为/login 退出为/logout
-
<!-- 以下页面不被拦截 --> <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认证
-
后端控制层获取当前登录用户名 String name=SecurityConetxtHolder.getContext().getAuthentication().getName()
-
-
可以设置认证类 其中使用框架自带方法 new SimpleGrantedAuthority("ROLE_SELLER")
-
-
在.xml文件中配置
-
-
项目中整体思路 先在web.xml中配置过滤器 和加载SpringSecurity.xml文件 然后在SpringSecurity.xm文件中配置认证管理器 和认证类 该放行的放行
-
在认证类中通过SecurityContextLoader.getConetext().getAuthentication().getName()获取当前登录名
-
根据用户名查询数据库如果有返回用户信息否则返回空