spring - 我正在使用带有 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 都在同一个包中。请帮我。
解决方案
您的类LoginController未使用@RestController注释,因此 Spring 未将其注册为 Bean。请注释您的课程。
如果它不起作用,请分享您的 Postman Post 请求
推荐阅读
- javascript - ReactJS - Webpack 未捕获错误:未定义要求
- javascript - 自动播放嵌入的 youtube 直播
- c++ - C++ 程序 if 函数中的语句未执行。似乎逻辑错误
- java - 使用 java GUI 旋转图像
- c# - 我可以创建一个运行代码隐藏方法的自定义属性吗?
- atom-editor - [Atom][Remote-ftp][colfax] 无法连接远程服务器
- assembly - MASM Visual Studio 中 x64 程序集的输入/输出
- javascript - 是否有与 php get_class 函数等效的 nodejs 来检测 javascript 对象的确切类型?
- linux - UNIX 中的文件是否总是由所有者和组拥有?
- python - 使用 Kivy 删除小部件