SpringSecurity的介绍和使用

    一、用法简介
            用户登录系统时 我们协助   SpringSecurity 把用户对应的角色、权限装配好,同时把各个资源所要求的权限信息设定好,剩下的“登录验证”和 “权限验证”都交给SpringSecurity
    二、权限管理的概念
        1.主体     principal
        使用系统的用户或设备或从其他系统远程登录的用户等等。简单的说就是那个使用系统那个就是主体。
        2.认证     authentication
        权限管理系统确认一个主体的身份。简单的来说就是证明主体自己是谁。总体来说就是我们做的登录系统
        3.授权    authorization
        将操作系统“权限”“授予”给主体,这样主体就具备了操作系统中特定功能的能力。简单的说就是授权就是给用户分配权限。
    三、权限管理的主流框架
        1.SpringSecurity
            spring的技术栈组成部分
                                   
            通过提供完整可扩展的认证和授权支持保护应用程序
             Spring Security
             特点:
                        和spring无缝整合
                        完整的权限控制
                        专门为web开发而设计:
                                        1.旧版本不能脱离web环境使用
                                        2.新版本对整个框架进行了分层抽取,分成了核心模块和web模块,单独引入核心模块就可                                                    以脱离web环境
                        重量级框架
        2.Shiro
            
            Apache旗下的轻量级权限控制框架
               特点:
                轻量级。shiro主张的理念是把复杂的事情变得简单。针对性能有更高要求的互联网应用有更好的表现。
                通用性
                        好处:不局限于web环境,可以脱离web环境使用
                        缺陷: 在web环境下一些特定的需求需要手动编写代码定制。
    
    四、创建HelloWorld工程
            步骤:1.创建Maven的web工程
                        2.加入SpringMVC需要的环境
                        3.创建springmvc配置文件
                        4.在web.xml中配置DispatcherServlet
                        5.创建包
                        6.  加入准备好的文件到Hello工程中
    五、在HelloWorld工程中加入SpringSecurity
            1.加入SpringSecurity依赖
                         < dependency >
< groupId >org.springframework.security</ groupId >
<artifactId>spring-security-web</artifactId>
<version>5.3.10.RELEASE</version>
</dependency>
<!-- SpringSecurity 配置 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.3.10.RELEASE</version>
</dependency>
<!-- SpringSecurity 标签库 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
< version >5.3.10.RELEASE</ version >
</ dependency >
            2. 加入SpringSecurity控制权限的Filter
               SpringSecurity使用的是过滤器Filter而不是 拦截器Interceptor,意味着SpringSecurity能够管理的不仅仅是SpringMVC中的handler请求,还包含web应用中的所有请求。例:项目中的静态资源也会被拦截,从而进行权限控制
         < 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 >
    
注意:标签中必须是springSecurityFilterChain。因为springSecurityFilterChain在IOC容器中对应真正执行权限控制的二十几个Filter。只有这个名字才能加载到这些Filter
        3.加入配置类
package com.pl.security.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//注意:这个类一定要放在自动扫描的包下,不然无法生效
@Configuration   //将这个类标记为配置类
@EnableWebSecurity  //启用web环境下的权限控制功能
public class WebAppSecurityConfig extends WebSecurityConfigurerAdapter {
}
        4.效果
                所有的请求都被SpringSecurity拦截,要求登录才可以访问
                静态资源也都被拦截,要求登录
                登录失败也有错误提示
  六 、SpringSecurity实验操作
        1.放行首页和静态资源
                在配置类中重写父类的configure(HTTPSecurity security)方法
                 @Override
protected void configure(HttpSecurity security) throws Exception {
security.authorizeRequests() //表示给请求授权
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值