首页 > 其他分享 >SpringSecurity从入门到精通:认证配置详解&权限系统的作用

SpringSecurity从入门到精通:认证配置详解&权限系统的作用

时间:2023-04-25 11:47:28浏览次数:28  
标签:入门 springframework SpringSecurity 详解 org import security 权限 annotation

认证配置详解

Config

package com.sangeng.config;

import com.sangeng.filter.JwtAuthenticationTokenFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;


@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {


    @Autowired
    private JwtAuthenticationTokenFilter authenticationTokenFilter;

    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
       /* http
                //关闭csrf
                .csrf().disable()
                //不通过Session获取SecurityContext
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                // 对于登录接口 允许匿名访问
                .antMatchers("/user/login").anonymous()
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated();*/
       http
               .csrf().disable()
               .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
               .and()
               .authorizeRequests()
               .antMatchers("/hello").permitAll()
               .antMatchers("/user/login").anonymous()
               .anyRequest().authenticated();

        http.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
    }

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }
}

 

 

 

 

权限系统的作用

  例如一个学校图书馆的管理系统,如果是普通学生登录就鞥看到借书还书的功能,不可能让他看到并且去使用添加书籍信息,删除书籍信息等功能,但是如果是一个图书馆的管理员的账号登录了,应该就能看到并使用添加书籍信息,删除书籍信息等功能

  总结起来就是不同的用户可以使用不同的功能,这就是权限系统要去实现的效果

  我们不能只依赖前端去判断用户的权限 来选择显示拿些菜单哪些按钮,因为如果是这样,如果有人知道了对应功能的接口地址,就可以不通过前端,直接去发送请求来实现相关功能操作

  所以我们还需要子啊后台进行用户权限的判断,判断当前用户是否有相应的权限,必须基于所需权限才能进行相应的操作

标签:入门,springframework,SpringSecurity,详解,org,import,security,权限,annotation
From: https://www.cnblogs.com/yu3304/p/17352143.html

相关文章

  • Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案
    Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)常用的两款AI可视化交互应用比较:GradioGradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,想......
  • 接口测试工具-Postman使用详解
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案
    Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)常用的两款AI可视化交互应用比较:GradioGradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,......
  • 计算机网络详解——HTTP/1.1 优缺点
    一、优点1.1可扩展正是因为HTTP规范中限制很少,告诉你可以做什么,但是不会告诉你各种条条框框不能做什么,所以,很容易扩展,这也是为什么从HTTP/0.9诞生,一直扩展升级,添加更多的特性的原因。1.2传输可靠性由于底层是基于TCP协议的,所以继承了TCP传输数据的可靠性,主要体现在[1]:数据......
  • Frida官方文档-快速入门指南
    对于不耐烦的人,这里是使用Frida进行跟踪的方法~$pipinstallfrida-tools~$frida-trace-i"recv*"-i"read*"*twitter*recv:Auto-generatedhandler:…/recv.js#(snip)recvfrom:Auto-generatedhandler:…/recvfrom.jsStartedtracing21functions.PressC......
  • Attention Is All You Need—transformer详解
    AttentionIsAllYouNeed论文transformer代码以下大部分是根据论文理解进行的总结和概括,如有疑问,欢迎交流~transformer仅仅使用注意力机制,没有使用任何的卷积或者RNN结构。传统RNN结构的当前隐层状态\(h_t\)需要当前时刻的输入以及上一时刻的隐状态输入\(h_{t-1}\),受到这一......
  • P.4-前后端分类登录校验、P.6-SpringSecurity完整流程
    P.4-前后端分类登录校验P.6-SpringSecurity完整流程SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。(了解即可)UsernamePasswordAuthenticationFilter:负责处理我们在登陆页面填写了用户名密码后的登陆请求。入门案例的认证工作主要......
  • 接口测试快速入门1简介
    简介本章介绍应用程序编程接口(APIapplicationprogramminginterface)和API测试。API测试是软件测试活动的一个重要方面(在典型的基于服务的软件开发过程中)。它包括测试应用程序的业务组件,通常表示为API,然后再开发UI。一个微服务处理单一需求的API。什么是API测试?API对应用层进......
  • 界面控件DevExtreme使用指南 - 折叠组件快速入门(二)
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。请注意:在开始本教程之前,请确保DevExtreme已安装在Angula......
  • 【代理设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介代理模式(ProxyPattern)是一种结构型设计模式,用一个类来代理另一个类或几个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。延迟初始化(虚拟代理)。如果你有一个偶尔使用的重量级服务对象,一直保持该对象运行会消耗系统资源时,可使用代理模式。访问......