Gateway中使用SpringSecurity进行网关鉴权与权限控制

本文介绍了如何在Spring Cloud Gateway中利用Spring Security进行网关级别的权限验证和控制。主要内容包括自定义登录页面、配置免认证和需认证的请求路径、在微服务架构下实现用户认证与授权、权限验证(包括单一角色和多个角色访问控制)、以及自定义过滤器的实现。通过实例展示了如何确保只有特定角色的用户才能访问特定的API。
摘要由CSDN通过智能技术生成

需求设求
众所周知,一切架构都必须按需求来设计,万能构架基本上是不存在的,即使是像Spring Security安全架构也只是实现了一个能用方式,并不是放之四海而皆准的,但是一个构架的良好扩展性是必须的,可以让使用者按照自己的需要进行扩展使用。所以为了说明本示例的实现,先假定这样一个需求
1,需要有一个Web网关服务进行权限统一认证
2,网关后面有一个用户管理服务,负责用户账号的管理
3,网关后面还存在其它的服务,但是这些服务需要认证成功之后才能访问
4,需要支持同一个请求可以被多个角色访问
主要技能点说明
1`修改默认登陆页面
在项目中添加完spring security依赖之后,如果不添加任何额外的配置,这时不管发送任何请求,都会跳到spring security提供的默认登陆页面。这显然不是我们想要的,那么第一步就是要显示自定义的登陆页面。
在Spring Gateway 网关项目中添加Security的配置,如下面代码所示:

@EnableWebFluxSecurity
public class WebSecurityConfig {
   
    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
   
        RedirectServerAuthenticationEntryPoint loginPoint = new RedirectServerAuthenticationEntryPoint("/xinyue-server-a/account/index");
        http.authorizeExchange().pathMatchers("/xinyue-server-a/easyui/**","/xinyue-server-a/js/**","/xinyue-server-a/account/index","/xinyue-server-a/account/login").permitAll()    
        .and().formLogin().loginPage("/xinyue-server-a/account/authen").authenticationEntryPoint(loginPoint)
        .and().authorizeExchange().anyExchange().authenticated()
        .and().csrf().disable
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值