[英]Spring boot jwt authentication only
我試圖在沒有任何授權的情況下實施 spring 引導身份驗證。 如此簡單的登錄、注冊和個人資料 api,其中允許所有人登錄和注冊 api,而個人資料僅適用於經過身份驗證的用戶。
大多數教程同時關注 RBAC 和身份驗證,而我只想關注身份驗證部分。
我已經在分散的教程的幫助下創建了基本結構。
我的授權控制器:
private final AuthService authService;
@PostMapping("/signin")
public ResponseEntity<?> signin(@RequestBody SigninRequest signinRequest) {
String email = signinRequest.getEmail();
log.info("email : {}", email);
String password = signinRequest.getPassword();
User user = authService.signin(email, password);
return ResponseEntity.ok().body(user);
}
@PostMapping("/signup")
public ResponseEntity<User> signup(@RequestBody User user){
URI uri = URI.create(ServletUriComponentsBuilder.fromCurrentContextPath().path("/api/v1/auth/signup").toUriString());
return ResponseEntity.created(uri).body(authService.signup(user));
}
我的 AuthServiceImpl:
public class AuthServiceImpl implements AuthService, UserDetailsService {
private final AuthRepository authRepository;
private final PasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
User user = authRepository.findByEmail(email);
if (user == null) {
throw new UsernameNotFoundException(email);
} else {
log.info("User found: {}", user);
}
return new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(), new ArrayList<>());
}
@Override
public User signup(User user) {
String encodedPassword = passwordEncoder.encode(user.getPassword());
user.setPassword(encodedPassword);
return authRepository.save(user);
}
@Override
public User signin(String email, String password) {
// handle login ??
return user;
}
}
一切都很順利,直到每個教程都達到將權限或角色發送回客戶端的程度。 我只想進行此應用程序身份驗證。
到目前為止,我的安全配置是:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final UserDetailsService userDetailsService;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/api/v1/auth/signin").permitAll()
.antMatchers("/api/v1/auth/signup").permitAll()
.antMatchers("/api/v1/auth/profile").authenticated();
http.httpBasic();
}
}
我的計划很簡單:
基於 Dockerised 角色的訪問系統和高級可修改用戶 API 訪問系統
Spring 安全性,JWT,基於 API 的數據庫身份驗證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.