首页 > 解决方案 > 我正在使用带有 userdetailed 服务的 Spring Boot 安全性。当我通过邮递员登录时,它给出错误“状态”:404,

问题描述

控制台输出如下:

In CustomUserDetailsService,loadUserByUsername,username ROA999
2020-05-02 22:45:52.246  INFO 11168 --- [nio-8080-exec-2] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
Hibernate: select user0_.user_id as user_id1_1_, user0_.email as email2_1_, user0_.password as password3_1_, user0_.username as username4_1_ from users user0_ where user0_.username=?
Hibernate: select roles0_.user_id as user_id1_2_0_, roles0_.role_id as role_id2_2_0_, role1_.role_id as role_id1_0_1_, role1_.role as role2_0_1_ from users_roles roles0_ inner join roles role1_ on roles0_.role_id=role1_.role_id where roles0_.user_id=?
In CustomUserDetailsService,user com.innovista.security.model.User@16e64638
In CustomUserDetailsService,user 999ROA999msr@innovista.co.in
In CustomUserDetailsService,userDetails are com.innovista.security.service.CustomUserDetails@197225ad
In CustomUserDetails password $2a$10$3FJX26VtWsHMrLbkfHyUMOnquRbENzdY0pO9t5S2zFKNPGnNYuKFi
In CustomUserDetails,roles1 [com.innovista.security.model.Role@36d61742]
In CustomUserDetails username ROA999
In CustomUserDetails username ROA999

邮递员的输出是:

{
    "timestamp": "2020-05-02T17:46:20.010+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/"
} 

配置文件如下所示:

 protected void configure(AuthenticationManagerBuilder auth) throws Exception {

        try {

        auth.userDetailsService(userDetailsService).passwordEncoder(encodePWD());

        }catch(Exception e) {
            e.printStackTrace();
        }

      }


@Bean
    public BCryptPasswordEncoder encodePWD() {
    return new BCryptPasswordEncoder();
    }
@Override
protected void configure(HttpSecurity http)throws Exception{
http.csrf().disable();  
http.authorizeRequests().antMatchers("/rest/**").authenticated().and().
formLogin().loginProcessingUrl("/rest/auth/process");

    }

控制器文件如下所示:

public class LoginController {

@PostMapping("/process")

public String process() { 

Authentication auth = SecurityContextHolder.getContext().getAuthentication();          
UserDetails userDetails = (UserDetails)auth.getPrincipal();
return (auth.getPrincipal().toString());
        }

但是当我通过内置登录页面登录时,它正在接受。我的 Main 类和 LoginController 都在同一个包中。请帮我。

标签: springspring-bootspring-security

解决方案


您的类LoginController未使用@RestController注释,因此 Spring 未将其注册为 Bean。请注释您的课程。

如果它不起作用,请分享您的 Postman Post 请求


推荐阅读