package com.safeluck.aaej.app.config
|
|
import com.safeluck.aaej.app.po.MobileSession
|
import com.safeluck.aaej.app.service.TokenService
|
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.core.MethodParameter
|
import org.springframework.stereotype.Component
|
import org.springframework.web.bind.support.WebDataBinderFactory
|
import org.springframework.web.context.request.NativeWebRequest
|
import org.springframework.web.method.HandlerMethod
|
import org.springframework.web.method.support.HandlerMethodArgumentResolver
|
import org.springframework.web.method.support.ModelAndViewContainer
|
import java.lang.annotation.ElementType
|
import java.lang.annotation.Retention
|
import java.lang.annotation.RetentionPolicy
|
import java.lang.annotation.Target
|
|
|
@Target(ElementType.PARAMETER)
|
@Retention(RetentionPolicy.RUNTIME)
|
annotation class AppSession
|
|
|
|
@Component
|
class SessionProcessor : HandlerMethodArgumentResolver
|
{
|
@Autowired
|
lateinit var tokenService: TokenService
|
override fun resolveArgument(methodParameter: MethodParameter, p1: ModelAndViewContainer?, nativeWebRequest: NativeWebRequest, p3: WebDataBinderFactory?): Any? {
|
val request = (nativeWebRequest as org.springframework.web.context.request.ServletWebRequest).request
|
val token = tokenService.getToken(request)
|
val session = tokenService.getSession(token!!)
|
//是否加了允许游客访问标签
|
if(session?.userid == null)
|
{
|
var allowVisitor = methodParameter.method!!.getAnnotation(AllowVisitor::class.java)!=null
|
||methodParameter.containingClass.getAnnotation(AllowVisitor::class.java)!=null
|
if(!allowVisitor) {
|
println("userid ==null 401")
|
val response = nativeWebRequest.response
|
response!!.sendError(401)
|
return null
|
}
|
}
|
|
if(session!=null){
|
return session
|
}
|
return MobileSession()
|
|
}
|
|
override fun supportsParameter(methodParameter: MethodParameter): Boolean {
|
return methodParameter.getParameterAnnotation(AppSession::class.java) != null
|
}
|
}
|