spring-security
Spring Security provides comprehensive support for authentication, authorization, and protection against common exploits. It also provides integration with other libraries to simplify its usage.
安全访问控制
FilterChain链
认证器、授权器
认证
授权
<!--pom.xml-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>${spring.security.oauth2.version}</version>
</dependency>
web.xml中实现spring-security过滤器,做资源权限的拦截和验证
配置spring-security.xml文件,并且需要引入
Spring
@RequestParam:绑定单个请求数据,可以是URL中的数据,表单提交的数据或上传的文件;
@PathVariable:绑定URL模板变量值;
@ModelAttribute:绑定数据到Model;
中文乱码
1.web.xml中加入如下
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.修改server.xml
<Context URIEncoding="UTF-8" docBase="coop-sale" path="/" reloadable="true" source="org.eclipse.jst.jee.server:coop-sale"/></Host>
单点登录
单点登录(Single Sign On,SSO)在多个应用系统中,用户只需一次登录,各个系统即可感知该用户已经登录。
- 单系统登录
HTTP是无状态
的协议,这意味着服务器无法确认用户的信息。于是,W3C提出给每一个用户发一个通信证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息,这个通行证就是Cookie。Session
多系统登录
单系统登录功能主要是用Session保存用户信息来实现的,而
1.多个系统之间的Session是不共享的
;那么如何解决系统之间Session不共享的问题:通过把Session数据放在Redis中;2.Cookie是不能跨域的
同域单点登录/不同于单点登录
JWT(JSON Web Token):
授权:这是最常见的使用场景,解决单点登录问题。因为JWT使用起来轻便,开销小,服务端不用记录用户状态信息(无状态),所以使用比较广泛;
信息交换:JWT是在各个服务之间安全传输信息的好方法。因为JWT可以签名,例如,使用公钥/私钥对儿 - 可以确定请求方是合法的。此外,由于使用标头和有效负载计算签名,还可以验证内容是否未被篡改。
如何打jar包
File->Project Structure->左侧选中Artifacts,然后点击右侧的+号,最后选择JAR->From modules with dependencies (设置main class选择自己要打包的类,没有就不需要设置),点击OK->删除其他依赖包,只把想要的打成jar包就可以了,->点击apply->ok->点击build进行编译,会自动打成jar包->到项目下的classes\artifacts\xxx_jar目录下找到刚打包好的jar包。