1. 权限管理的主流框架
1)SpringSecurity
Spring技术栈的组成部分。
通过提供完整可扩展的认证和授权支持保护你的应用程序。https://spring.io/projects/spring-security
SpringSecurity特点:
- 和Spring无缝整合。
- 全面的权限控制。
- 专门为Web开发而设计。旧版本不能脱离Web环境使用。新版本对整个框架进行了分层抽取,分成了核心模块和Web模块。单独引入核心模块就可以脱离Web环境。
- 重量级。
2)Shiro
Apache旗下的轻量级权限控制框架。
特点:
- 轻量级。Shiro主张的理念是把复杂的事情变简单。针对对性能有更高要求的互联网应用有更好表现。
- 通用性。
好处:不局限于Web环境,可以脱离Web环境使用。
缺陷:在Web环境下一些特定的需求需要手动编写代码定制。
学习视频网址:http://www.gulixueyuan.com/course/45
2. 应用 SpringSecurity
2.1 依赖
<!-- SpringSecurity对Web应用进行权限管理 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.10.RELEASE</version>
</dependency>
<!-- SpringSecurity配置 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.10.RELEASE</version>
</dependency>
<!-- SpringSecurity标签库 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>4.2.10.RELEASE</version>
</dependency>
2.2 在 web.xml 中加入SpringSecurity控制权限的Filter
SpringSecurity使用的是过滤器Filter而不是拦截器Interceptor,意味着SpringSecurity能够管理的不仅仅是SpringMVC中的handler请求,还包含Web应用中所有请求。比如:项目中的静态资源也会被拦截,从而进行权限控制。
<!--SpringSecurity控制权限的Filter-->
<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>
特别注意:<filter-name>springSecurityFilterChain</filter-name>标签中必须是springSecurityFilterChain。因为springSecurityFilterChain在IOC容器中对应真正执行权限控制的二十几个Filter,只有叫这个名字才能够加载到这些Filter。
2.3 加入配置类
@EnableWebSecurity 注解表示启用Web安全功能。
2.4 效果
所有请求都被SpringSecurity拦截,要求登录才可以访问。