springSecurity遇到302访问不了放行的路由

问题详情

controller代码

@RestController
@RequestMapping("/test")
public class TestController {
    @Autowired
    private LoginUserMapper loginUserMapper;

    @PreAuthorize("hasAnyRole('ROLE_DEV','ROLE_PM')")
    @GetMapping("/index")
    public String index(){
        return "index";
    }

    @PreAuthorize("hasAnyRole('ROLE_ADMIN')")
    @GetMapping("/admin")
    public String admint(){
        return "index";
    }

    @PostMapping
    public String postTest(){

        return "111";
    }

    @GetMapping
    public String getAll(){
        final List<LoginUser> loginUsers = loginUserMapper.selectList(null);
        System.out.println(loginUsers);
        return null;
    }

}

security配置

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin()// 自定义自己编写的登录页面
                .loginPage("/login.html") //登录页面设置
                .loginProcessingUrl("/user/login") //登录访问的路由路径   表单提交处理登录逻辑的路由   具体逻辑由security自己做了,我们只用写上地址
                .defaultSuccessUrl("/test/index").permitAll() //登录成功后认证成功的跳转路径
                .and().authorizeRequests()//可以自定义哪些被保护哪些不被保护
                .antMatchers("/", "/test/hello", "/user/login")//第一个是索引,后面是路由
                .permitAll()//设置哪些路径可以直接访问,不需要认证
                .anyRequest().authenticated()//拦截所有请求

                .and().csrf().disable();


    }

直接访问不了/test/index主要是因为@PreAuthorize("hasAnyRole('ROLE_DEV','ROLE_PM')"),删掉之后就能访问了

个人理解

在写了权限认证的注解后,security默认需要登录之后才有资格进行权限验证,所以如果检测到未登录,就算是方向的路由也会被拦截,跳转到登录页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值