我有一个grails(3.3.5)Web服务器,我有兴趣提高可用性,我想添加另一台服务器并在其前面放置一个负载均衡器。
我不想在服务器之间共享会话,也不使用粘性会话,而是想知道是否有一种很好的方法来建立无会话的前端服务器。除了使用spring-security来验证用于识别用户的会话令牌,我不会使用会话。
我想找到一个适合前端的基于令牌的身份验证系统,以便令牌安全且足以识别当前用户。
我已经看过grails-spring-security-rest插件看起来很有希望,但似乎每个人都在用它来进行后端休息api调用。当您不在webapp会话中存储应用程序数据时,它是否也适用于前端身份验证?
答案 0 :(得分:0)
如果您不使用控制器中的static singleton = true
对象,则tomcat不会为您创建任何会话。
您也可以将控制器定义为
grails-spring-security-rest
然后它们将不是基于每个请求进行实例化。
现在,如果您仍想使用会话,可以使用Cookie Sessions之类的内容,并将数据保存在cookie中而不是tomcat的内存中。
我没有使用spring-security-core
,但您应该能够调整scr.allowSessionCreation
无会话。您应该将false
设置为remember-me
并使用{{1}}。
答案 1 :(得分:0)
由于Grails是基于Spring Boot构建的,因此您可以访问Spring Session(https://docs.spring.io/spring-session/docs/2.0.x/reference/html5/)的所有功能,其中包括使用某些数据存储在服务器实例之间共享会话数据而不是将其保留在内存中的功能。
在这些文档中,您将找到指向Grails 3.1示例的指南,该示例使用Redis作为存储。 https://github.com/spring-projects/spring-session/tree/2.0.3.RELEASE/samples/misc/grails3
答案 2 :(得分:0)
当您没有在webapp会话中存储应用程序数据时,它是否也适用于前端身份验证?
是的,您可以在前端使用JWT令牌。您需要正确配置控制器的安全过滤器,以便它们不使用cookie进行身份验证,但他们正在寻找JWT。
请参阅:http://alvarosanchez.github.io/grails-spring-security-rest/latest/docs/#_plugin_configuration以获取应验证JWT令牌的端点的配置。
使用Angular查看https://github.com/hantsy/angularjs-grails-sample/wiki/3-basic-auth无状态示例。