web项目中应用SpringSecurity

1. 权限管理的主流框架

1)SpringSecurity

Spring技术栈的组成部分。

通过提供完整可扩展的认证和授权支持保护你的应用程序。https://spring.io/projects/spring-security

SpringSecurity特点:

  • 和Spring无缝整合。
  • 全面的权限控制。
  • 专门为Web开发而设计。旧版本不能脱离Web环境使用。新版本对整个框架进行了分层抽取,分成了核心模块和Web模块。单独引入核心模块就可以脱离Web环境。
  • 重量级。

2)Shiro

Apache旗下的轻量级权限控制框架。

特点:

  • 轻量级。Shiro主张的理念是把复杂的事情变简单。针对对性能有更高要求的互联网应用有更好表现。
  • 通用性。

              好处:不局限于Web环境,可以脱离Web环境使用。

              缺陷:在Web环境下一些特定的需求需要手动编写代码定制。

官网网址:http://shiro.apache.org/

学习视频网址: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拦截,要求登录才可以访问。

发布了31 篇原创文章 · 获赞 13 · 访问量 1402

猜你喜欢

转载自blog.csdn.net/weixin_44210965/article/details/103639089
今日推荐