我正在使用spring boot创建一个后端应用程序,其用户使用JWT进行身份验证。
当我验证用户的jwt(使用过滤器)时,我将其内容解析为一个名为“身份验证”的对象,其中包含用户的id、名称、角色...
在用用户数据创建这个对象之后,我自动连接它,以便将它用于任何类(服务、控制器…)
大多数时候,我对它没有问题。但有时我发现这个对象包含另一个用户的信息。
我认为每个用户都可以访问包含其信息的对象,如果这个对象不包含信息,那么他将拥有一个空对象,而不是其他用户的对象
这种推理会产生冲突吗?如何解决它?
这是我的过滤课
@Component
class AuthenticationFilter : Filter, Ordered
{
@Autowired
private lateinit var jwtUtils : JwtUtils
@Autowired
private lateinit var beanFactory : AutowireCapableBeanFactory
@Autowired
private lateinit var authentication : Authentication
override fun doFilter(request : ServletRequest, response : ServletResponse, chain : FilterChain)
{
if (request is HttpServletRequest)
{
val authFromHeader : Authentication? = getAuthenticatedUser(request)
if (authFromHeader != null)
{
authentication.id = authFromHeader.id
authentication.name = authFromHeader.name
authentication.role = authFromHeader.role
authentication.level = authFromHeader.level
beanFactory.autowireBean(authentication)
}
}
chain.doFilter(request, response)
}
private fun getAuthenticatedUser(request : HttpServletRequest) : Authentication?
{
return try
{
val jwtToken : String? = request.getHeader(HttpHeaders.AUTHORIZATION)
jwtUtils.getAuthentication(jwtToken)!!
}
catch (exception : Exception)
{
null
}
}
override fun getOrder() : Int
{
return Ordered.HIGHEST_PRECEDENCE
}
}
authFromHeader必须在lateinit中声明
我有一节这样的课- 我试图注入'pty'变量从另一个类'环境'这是自动的,我得到这个异常时,我的服务器启动 错误创建名为'某物类'的bean:注入自动生成的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreation异常:无法自动连接方法:公共无效service.facade.ActionFacade.setPty(java.lang.字符串)
我试图在MessageBoxDAO类中自动连接jdbctemplate(我想它工作得很好),然后我在控制器中创建自动连接的DAO对象来获取最新的ID,以防止获取重复的ID,并从它结束的地方开始。 代码如下: 由于我未知的原因,“dao”为空,因此无法构造计数器,程序停止 我刚接触spring boot,我知道这可能是一个非常简单的问题,但有人能指出我错在哪里吗?
我有个小问题。如果类是用@component、@service、@controller或@repository注释的,并且我想注入它的依赖项,我需要@autowired吗? 这段代码对我来说非常适用,因为它是UserDeviceService中指定的@Service注释。是因为那个吗?
我有一个带有自动扫描和@Component注释的Spring项目。一些组件需要使用@Autow的注入到不同的bean中。默认情况下,它是否将是作为单例创建的相同组件bean?如果是,如何将同一组件的不同实例注入不同的bean中? 附言:我知道它接近基础,听起来很一般。只是想自己说清楚。 提前致谢
问题内容: 我想知道判断Shape对象是否与另一个形状相交的最佳方法。目前,我在游戏中已对碰撞检测进行了分类,只要它涉及与矩形相交的Shape,反之亦然。我遇到的问题是Shape类中的intersects()方法只能将Rectangle或Point作为参数,而不能将另一个Shape用作参数。有没有一种有效的方法来测试两个Shape对象是否以任何方式重叠?我尝试的一种方法是使用for循环生成一个点区
那么我的问题是,@javax为什么会这样做。注释。资源工作,但@AutoWired没有工作。为了在Restful控制器上进行测试,我尝试将MappingJackson2HttpMessageConverter注入@Autowired,在启动时,容器未能找到符合条件的bean,即使该类位于路径上。现在,为了解决这个问题,我进入了一个上下文xml文件并添加了bean: 然后在测试类中有成员变量: 然后