代码之家  ›  专栏  ›  技术社区  ›  kavrosis

如何在Spring Security中从未经授权的请求中配置api和ui

  •  -1
  • kavrosis  · 技术社区  · 7 年前

    我是Spring Security的新手,所以请原谅我不够清晰。我有一个带有Java配置的Spring boot项目。

    项目具有UI (我的应用程序) 使用登录表单和Rest API (我的应用程序/api) 。我想用Spring安全性来保护这两者,我成功地保护了UI部分。当未经授权的用户试图请求禁止的资源时,将重定向到登录页面。我的问题是当我试图保护Rest API时。通过以下设置,我可以保护UI部分。

     http
                .authorizeRequests()
                .antMatchers("/login", "/about", "/resource/**").permitAll()
                .anyRequest().authenticated()
            .and()
                .formLogin() 
                .loginPage("/login") 
                .permitAll()
                .failureUrl("/login?error=true")
            .and()
                .logout()
                .logoutSuccessUrl("/login")
    

    UI得到了很好的保护,注销和登录错误会重定向到登录页面,唯一的警告是禁止访问API,返回登录HTML文本。 使用下一个设置

     http.antMatcher("/my-app/**")
                .authorizeRequests().anyRequest().authenticated();
    

    只有API受到保护,在任何未经授权的请求中,它会返回一个带有错误的JSON(这是所需的行为),并且没有重定向/html文本打印。我知道我的API已经接受了身份验证,因为我使用了一个承载令牌(Oauth2密码授予类型),并且工作得很好。

    为了得到去干燥的结果,我在混合这两种设置时遇到了问题。

    欢迎提出任何建议。

    1 回复  |  直到 7 年前
        1
  •  0
  •   maverick    7 年前