如何在不配置XML的情况下定义自定义AuthenticationEntryPoint

爱丽舍

我已经挣扎了几天。我在Spring Boot中是新手,并且喜欢不使用XML配置的想法。

我创建了一个RESTfull应用程序(带有JSON)。我正在按照本教程正确配置身份验证。

我想我设法使用Java配置重现了几乎所有配置,除了一件事- AuthenticationEntryPoint

本教程在http标签中使用这样的属性,通过以下方式定义formLogin

<http entry-point-ref="restAuthenticationEntryPoint">

  <intercept-url pattern="/api/admin/**" access="ROLE_ADMIN"/>

  <form-login
     authentication-success-handler-ref="mySuccessHandler"
     authentication-failure-handler-ref="myFailureHandler"
  />

  <logout />

</http>

Spring Security手册中AuthenticationEntryPoint解释说:

可以使用<http>元素上的entry-point-ref属性来设置AuthenticationEntryPoint。

没有提及有关如何使用Java Configuration进行操作的任何内容。

那么,如何restAuthenticationEntryPoint在不使用XML情况下“注册”我自己的内容,以防止在使用formLogin时重定向到登录表单

下面我将提及我尝试过的内容。

谢谢你们。


在我的尝试中,发现可以使用basicAuth定义它,如下所示:

@Configuration
@Order(1)                                                        
public static class RestWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {


        if (restAuthenticationEntryPoint == null) {
            restAuthenticationEntryPoint = new RestAuthenticationEntryPoint();
        }

        http
            .authorizeRequests()
                .antMatchers("/**").hasAnyRole(Sec.ADMIN,Sec.SUPER_USER)
...
        .and()
            .httpBasic()
                .authenticationEntryPoint(restAuthenticationEntryPoint)

但是我正在使用这样的表单登录名(没有httpBasic部分):

        .and()
            .formLogin()
                .successHandler(mySavedRequestAwareAuthenticationSuccessHandler)
                .failureHandler(simpleUrlAuthenticationFailureHandler)

问题在于,当它没有收到凭据时,它将重定向到登录表单。由于这是REST服务,因此不应该。

文件FormLoginConfigurer(类.formLogin()用途)说:

创建共享对象

填充以下共享库

AuthenticationEntryPoint

但是找不到替代它的方法。
有任何想法吗?

PS
不要以为将登录表单替换为仅返回错误的自定义表单是一个好主意。

戴夫·瑟

您提供的参考文档中的报价将您指向http.exceptionHandling()您可以在那里设置共享入口点。

http.exceptionHandling().authenticationEntryPoint(myEntryPoint);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不使用Gradle显式定义其路径的情况下定义自定义源集?

来自分类Dev

如何在没有定义长度的情况下定义数组

来自分类Dev

通用方法的特质界限:如何在不重复自己的情况下定义相同的界限

来自分类Dev

如何在不输入数字的情况下定义数学常数?

来自分类Dev

cmake:如何在不链接的情况下定义目标(仅编译)

来自分类Dev

如何在不重复类型的情况下定义函数类型别名的值?

来自分类Dev

如何在没有“ TypeError:无法确定真值”的情况下定义分段函数

来自分类Dev

如何在不使用接口的情况下定义对象属性的类型

来自分类Dev

Rails 4,如何在不创建新模型的情况下定义付款类型关联?

来自分类Dev

REST&GAE:如何在不使用资源ID的情况下定义吸气剂

来自分类Dev

如何在不重复类型的情况下定义函数类型别名的值?

来自分类Dev

如何在没有泛型类型参数的情况下定义泛型函数?

来自分类Dev

如何在没有导航属性的情况下定义外键

来自分类Dev

如何在没有中断的情况下定义与 STL 兼容的输入迭代器?

来自分类Dev

如何在没有类型定义的情况下定义通用类型的“具有属性”约束?

来自分类Dev

如何在没有GADT或数据类型上下文的情况下定义列表的Eq实例

来自分类Dev

如何在键类型和值类型都是联合的情况下定义具有相关性的Map

来自分类Dev

如何在不执行包含在其中的美元符号的情况下定义别名?

来自分类Dev

如何在WSO2序列的切换情况下定义正则表达式条件?

来自分类Dev

在不重复的情况下定义和导出函数

来自分类Dev

vala如何允许在没有默认构造函数的情况下定义GObjects?

来自分类Dev

如何在仅具有自变量的构造函数中设置属性。我也不知道如何在没有实现的情况下定义方法

来自分类Dev

如何在不使用闭包的情况下定义带有参数的回调,并在PHP中使用它?

来自分类Dev

仅在启用JavaScript的情况下定义特定的CSS样式

来自分类Dev

我可以在没有auto的情况下定义C ++ lambda函数吗?

来自分类Dev

Haskell在一种情况下定义了多个变量?

来自分类Dev

在不使用额外内存的情况下定义更高维的数组

来自分类Dev

在不考虑实现细节的情况下定义与其他功能相关的功能

来自分类Dev

如果情况下定义的变量泄漏?(aka为什么还要编译?)

Related 相关文章

  1. 1

    如何在不使用Gradle显式定义其路径的情况下定义自定义源集?

  2. 2

    如何在没有定义长度的情况下定义数组

  3. 3

    通用方法的特质界限:如何在不重复自己的情况下定义相同的界限

  4. 4

    如何在不输入数字的情况下定义数学常数?

  5. 5

    cmake:如何在不链接的情况下定义目标(仅编译)

  6. 6

    如何在不重复类型的情况下定义函数类型别名的值?

  7. 7

    如何在没有“ TypeError:无法确定真值”的情况下定义分段函数

  8. 8

    如何在不使用接口的情况下定义对象属性的类型

  9. 9

    Rails 4,如何在不创建新模型的情况下定义付款类型关联?

  10. 10

    REST&GAE:如何在不使用资源ID的情况下定义吸气剂

  11. 11

    如何在不重复类型的情况下定义函数类型别名的值?

  12. 12

    如何在没有泛型类型参数的情况下定义泛型函数?

  13. 13

    如何在没有导航属性的情况下定义外键

  14. 14

    如何在没有中断的情况下定义与 STL 兼容的输入迭代器?

  15. 15

    如何在没有类型定义的情况下定义通用类型的“具有属性”约束?

  16. 16

    如何在没有GADT或数据类型上下文的情况下定义列表的Eq实例

  17. 17

    如何在键类型和值类型都是联合的情况下定义具有相关性的Map

  18. 18

    如何在不执行包含在其中的美元符号的情况下定义别名?

  19. 19

    如何在WSO2序列的切换情况下定义正则表达式条件?

  20. 20

    在不重复的情况下定义和导出函数

  21. 21

    vala如何允许在没有默认构造函数的情况下定义GObjects?

  22. 22

    如何在仅具有自变量的构造函数中设置属性。我也不知道如何在没有实现的情况下定义方法

  23. 23

    如何在不使用闭包的情况下定义带有参数的回调,并在PHP中使用它?

  24. 24

    仅在启用JavaScript的情况下定义特定的CSS样式

  25. 25

    我可以在没有auto的情况下定义C ++ lambda函数吗?

  26. 26

    Haskell在一种情况下定义了多个变量?

  27. 27

    在不使用额外内存的情况下定义更高维的数组

  28. 28

    在不考虑实现细节的情况下定义与其他功能相关的功能

  29. 29

    如果情况下定义的变量泄漏?(aka为什么还要编译?)

热门标签

归档