mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-08-13 06:41:00 +00:00
Merge pull request #18 from nagisa77/codex/fix-issue-with-retrieving-post-data
Fix anonymous access for post and comment retrieval
This commit is contained in:
@@ -81,12 +81,18 @@ public class SecurityConfig {
|
|||||||
@Override
|
@Override
|
||||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
||||||
String authHeader = request.getHeader("Authorization");
|
String authHeader = request.getHeader("Authorization");
|
||||||
|
String uri = request.getRequestURI();
|
||||||
|
|
||||||
|
boolean publicGet = "GET".equalsIgnoreCase(request.getMethod()) &&
|
||||||
|
(uri.startsWith("/api/posts") || uri.startsWith("/api/comments"));
|
||||||
|
|
||||||
if (authHeader != null && authHeader.startsWith("Bearer ")) {
|
if (authHeader != null && authHeader.startsWith("Bearer ")) {
|
||||||
String token = authHeader.substring(7);
|
String token = authHeader.substring(7);
|
||||||
try {
|
try {
|
||||||
String username = jwtService.validateAndGetSubject(token);
|
String username = jwtService.validateAndGetSubject(token);
|
||||||
UserDetails userDetails = userDetailsService().loadUserByUsername(username);
|
UserDetails userDetails = userDetailsService().loadUserByUsername(username);
|
||||||
UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
|
UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(
|
||||||
|
userDetails, null, userDetails.getAuthorities());
|
||||||
org.springframework.security.core.context.SecurityContextHolder.getContext().setAuthentication(authToken);
|
org.springframework.security.core.context.SecurityContextHolder.getContext().setAuthentication(authToken);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
||||||
@@ -94,12 +100,13 @@ public class SecurityConfig {
|
|||||||
response.getWriter().write("{\"error\": \"Invalid or expired token\"}");
|
response.getWriter().write("{\"error\": \"Invalid or expired token\"}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (!request.getRequestURI().startsWith("/api/auth")) {
|
} else if (!uri.startsWith("/api/auth") && !publicGet) {
|
||||||
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
||||||
response.setContentType("application/json");
|
response.setContentType("application/json");
|
||||||
response.getWriter().write("{\"error\": \"Missing token\"}");
|
response.getWriter().write("{\"error\": \"Missing token\"}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
filterChain.doFilter(request, response);
|
filterChain.doFilter(request, response);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user