增加错误处理,修复命名错误
This commit is contained in:
parent
6f3ec5a45a
commit
5df5346176
@ -1,6 +0,0 @@
|
|||||||
package dev.surl.surl.common.exception
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 自定义权限异常
|
|
||||||
*/
|
|
||||||
class UnauthorizedExcecption(message: String? = null, cause: Throwable? = null) : Exception(message, cause)
|
|
@ -0,0 +1,6 @@
|
|||||||
|
package dev.surl.surl.common.exception
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义权限异常
|
||||||
|
*/
|
||||||
|
class UnauthorizedException(message: String? = null, cause: Throwable? = null) : Exception(message, cause)
|
@ -4,13 +4,14 @@ import com.fasterxml.jackson.databind.ObjectMapper
|
|||||||
import dev.surl.surl.cfg.BaseConfig
|
import dev.surl.surl.cfg.BaseConfig
|
||||||
import dev.surl.surl.common.Msg
|
import dev.surl.surl.common.Msg
|
||||||
import dev.surl.surl.common.enums.RedisStorage
|
import dev.surl.surl.common.enums.RedisStorage
|
||||||
import dev.surl.surl.common.exception.UnauthorizedExcecption
|
import dev.surl.surl.common.exception.UnauthorizedException
|
||||||
import dev.surl.surl.util.JwtTokenUtil
|
import dev.surl.surl.util.JwtTokenUtil
|
||||||
import dev.surl.surl.util.redis.RedisUtil
|
import dev.surl.surl.util.redis.RedisUtil
|
||||||
import jakarta.servlet.FilterChain
|
import jakarta.servlet.FilterChain
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
import org.springframework.http.HttpHeaders
|
import org.springframework.http.HttpHeaders
|
||||||
|
import org.springframework.oxm.ValidationFailureException
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.web.filter.OncePerRequestFilter
|
import org.springframework.web.filter.OncePerRequestFilter
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ class JwtAuthenticationTokenFilter(
|
|||||||
if (request.servletPath notMatchedIn cfg.whiteList) {
|
if (request.servletPath notMatchedIn cfg.whiteList) {
|
||||||
try {
|
try {
|
||||||
// 验证token
|
// 验证token
|
||||||
val exp = UnauthorizedExcecption("unauthorized")
|
val exp = UnauthorizedException("unauthorized")
|
||||||
val authHeader = request.getHeader(HttpHeaders.AUTHORIZATION) ?: throw exp
|
val authHeader = request.getHeader(HttpHeaders.AUTHORIZATION) ?: throw exp
|
||||||
val token = jwtTokenUtil.getTokenFromHeader(authHeader)
|
val token = jwtTokenUtil.getTokenFromHeader(authHeader)
|
||||||
val cachedToken = run {
|
val cachedToken = run {
|
||||||
@ -45,9 +46,13 @@ class JwtAuthenticationTokenFilter(
|
|||||||
}
|
}
|
||||||
// redis缓存内检查不到已存在token拒绝认证,抛出异常
|
// redis缓存内检查不到已存在token拒绝认证,抛出异常
|
||||||
if (cachedToken != token) throw exp
|
if (cachedToken != token) throw exp
|
||||||
} catch (e: UnauthorizedExcecption) {
|
} catch (e: Exception) {
|
||||||
// 认证失败
|
// 认证失败
|
||||||
response.status = HttpServletResponse.SC_UNAUTHORIZED
|
if(e is UnauthorizedException || e is ValidationFailureException) {
|
||||||
|
response.status = HttpServletResponse.SC_UNAUTHORIZED
|
||||||
|
} else {
|
||||||
|
response.status = HttpServletResponse.SC_INTERNAL_SERVER_ERROR
|
||||||
|
}
|
||||||
val responseBody = om.writeValueAsString(Msg<String>(code = -1, msg = e.message))
|
val responseBody = om.writeValueAsString(Msg<String>(code = -1, msg = e.message))
|
||||||
response.writer.run {
|
response.writer.run {
|
||||||
write(responseBody)
|
write(responseBody)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package dev.surl.surl.handler
|
package dev.surl.surl.handler
|
||||||
|
|
||||||
import dev.surl.surl.common.Msg
|
import dev.surl.surl.common.Msg
|
||||||
import dev.surl.surl.common.exception.UnauthorizedExcecption
|
import dev.surl.surl.common.exception.UnauthorizedException
|
||||||
import dev.surl.surl.common.exception.UserRegistException
|
import dev.surl.surl.common.exception.UserRegistException
|
||||||
import jakarta.validation.ConstraintViolationException
|
import jakarta.validation.ConstraintViolationException
|
||||||
import org.springframework.http.HttpHeaders
|
import org.springframework.http.HttpHeaders
|
||||||
@ -98,7 +98,7 @@ class DefaultExceptionHandler : ResponseEntityExceptionHandler() {
|
|||||||
return ResponseEntity(Msg(code = -1, msg = ex.message ?: "unknown validation error"), HttpStatus.BAD_REQUEST)
|
return ResponseEntity(Msg(code = -1, msg = ex.message ?: "unknown validation error"), HttpStatus.BAD_REQUEST)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(value = [UnauthorizedExcecption::class])
|
@ExceptionHandler(value = [UnauthorizedException::class])
|
||||||
fun handleUnauthorizedException(ex: Exception): ResponseEntity<Msg<String>> {
|
fun handleUnauthorizedException(ex: Exception): ResponseEntity<Msg<String>> {
|
||||||
return ResponseEntity(Msg(code = -1, msg = ex.message ?: "unauthorized"), HttpStatus.UNAUTHORIZED)
|
return ResponseEntity(Msg(code = -1, msg = ex.message ?: "unauthorized"), HttpStatus.UNAUTHORIZED)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user