Java 在执行GET请求时实现令牌式安全性

Java 在执行GET请求时实现令牌式安全性,java,ajax,spring,security,token,Java,Ajax,Spring,Security,Token,我正在为应用程序实现一个临时的、非常简单的令牌式身份验证机制 这个想法很简单。每当用户登录到应用程序时,就会向客户端返回一个令牌,客户端将其存储在浏览器的sessionStorage数据结构中 现在,每当我通过AJAX执行请求时,我都可以将令牌与请求一起发送,服务器可以验证该令牌是否与身份验证或用户名关联。如果是,则正常解析请求;如果不是,则返回或显示错误页面或初始页面 我不确定这是否是在真实或严肃的应用程序中实现令牌式身份验证和授权的方式,但我现在不知道在执行GET请求时如何通过单击视图的链接

我正在为应用程序实现一个临时的、非常简单的令牌式身份验证机制

这个想法很简单。每当用户登录到应用程序时,就会向客户端返回一个令牌,客户端将其存储在浏览器的
sessionStorage
数据结构中

现在,每当我通过AJAX执行请求时,我都可以将令牌与请求一起发送,服务器可以验证该令牌是否与身份验证或用户名关联。如果是,则正常解析请求;如果不是,则返回或显示错误页面或初始页面

我不确定这是否是在真实或严肃的应用程序中实现令牌式身份验证和授权的方式,但我现在不知道在执行GET请求时如何通过单击视图的链接发送令牌


我唯一的想法是拦截get请求,以便我可以用令牌填充它们,但这一切似乎都很奇怪,我已经有很多链接和视图。

您可以设置cookie,确保将其设置为httponly(如果您在https站点上,则为安全),并在到达服务器的每个请求上读取cookie

搜索Json Web标记和java上的实现。这正是你需要的

如果要向用户发送jwt中的一些敏感数据,请使用Json Web加密


您可以在每个请求头上发送该令牌,也可以作为请求参数使用JWT令牌(请参阅)。JWT基本上是一个JSON数据结构。通常,令牌会在授权http头中传递。

尝试使用cookies而不是
会话存储
@Sam您知道有任何示例或教程可以引导我走向正确的方向吗?我没有使用Spring,但我在谷歌上搜索并发现@Sam Ok,在示例中,cookie是简单设置的。此cookie将在每次请求时发送到服务器。但是,如果我想允许同一用户从多个设备连接,该怎么办?您必须在每个设备上设置cookie。这是正常的。当你使用一个新的设备访问一个网站时,你必须再次输入用户名和密码,所以网站可以在新设备上设置cookie。任何具体的例子可能使用java、Spring和JavaScript?你还应该考虑,为了安全,采用JWT(JSON Web令牌),在每个请求上发送cookie…例如,如果我允许一个用户连接多次,而cookie的键是用户名,那么这将不起作用,因为在每次登录时,与某个用户名关联的值都会被覆盖。如果cookie的键是生成的随机令牌,那么我无法区分服务器端同一用户的不同登录…您将如何解决此问题?在jwt中,您可以在令牌中设置自定义属性。不需要保存用户令牌映射服务器端。好的,有具体的例子吗?你能给我展示一个使用JS和Spring的JWT使用的具体例子吗?JWT.io站点中提供了几个java实现。其中一个是Jose4J:。这里有许多例子说明了如何在不考虑弹簧的情况下执行此操作。只需编写自己的组件类,将其封装在spring中。在js中,只需添加一个特殊的请求参数——称之为jwe。或者将其添加到请求标题。如果您仍然没有收到,我将发布一些代码。但您应该真正执行自己的搜索,以确保选择最佳的方法和实现。