Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过POST/Login API实现Spring安全登录_Java_Spring_Spring Boot_Spring Security - Fatal编程技术网

Java 通过POST/Login API实现Spring安全登录

Java 通过POST/Login API实现Spring安全登录,java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,我正在创建一个具有自己的登录/注册视图/页面的应用程序/网页。 我的后端服务是Java,并使用Spring安全性来管理用户的身份验证 基本目标是(从应用程序中):- 通过/RegisterAPI注册用户。(注册页面已在客户端上) 显示登录页面(已在客户端) 点击/loginapi以使用提供的用户名和密码对用户进行身份验证。(在JSON POST请求中提供) 成功后,返回一个cookie,用于下一个操作/api调用,以验证登录的用户 登录和注册API都将作为公共API启用 这是我的春季安全配置 /

我正在创建一个具有自己的登录/注册视图/页面的应用程序/网页。

我的后端服务是Java,并使用Spring安全性来管理用户的身份验证

基本目标是(从应用程序中):-

  • 通过
    /Register
    API注册用户。(注册页面已在客户端上)
  • 显示登录页面(已在客户端)
  • 点击
    /login
    api以使用提供的用户名和密码对用户进行身份验证。(在JSON POST请求中提供)
  • 成功后,返回一个cookie,用于下一个操作/api调用,以验证登录的用户
  • 登录和注册API都将作为公共API启用

    这是我的春季安全配置

    //all imports
    
    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        private PasswordEncoder passwordEncoder;
    
    
        @Autowired
        public SecurityConfig(PasswordEncoder passwordEncoder) {
            this.passwordEncoder = passwordEncoder;
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/login", "/register").permitAll() //to allow these urls
                    .anyRequest().authenticated().and()
                     // dont want Spring's Login page to get rendered
                    .formLogin().loginProcessingUrl("/login").and().rememberMe(); 
        }
    
    
        @Override
        @Bean
        protected UserDetailsService userDetailsService() {
            //for HTTP Basic Auth - but needs to be removed to implement Cookie based authentications
            UserDetails userDetails = User.builder().
                    username("admin").
                    password(passwordEncoder.encode("admin")).
                    roles("ADMIN").
                    build();
    
            return new InMemoryUserDetailsManager(userDetails);
    
        }
    }
    
    
    我担心的是
    loginProcessingUrl()
    不会重定向我的URL
    https:///login
    请求其映射的控制器方法,该方法从DB内部获取用户并进行验证。 也
    https:///register
    PostAPI不起作用,它每次都要求登录

    浏览了所有的Spring文档和教程,但似乎没有人回答这样的问题

    如何实现这一点?

    loginProcessingUrl(“/path”)
    是通知Spring security处理凭据的路径。请注意,这不会将请求传递给控制器方法

    要显示自己的登录页面而不是默认页面,您应该使用
    loginPage(“/login”)
    。这是返回HTML页面的GET请求

    你可能对我感兴趣


    请参阅此

    JSON帖子,了解登录名
    /login
    将不起作用。它将是表单数据。除非您想拥有自己的
    /login
    控制器,该控制器接受并调用用于same@Rajeev还有什么例子我可以参考吗?是否严格强制使用formData?就是这样,我不想从服务器获取html。我在客户端应用程序上有自己的html页面,可以调用
    /login
    POST