禁用和无状态会话管理有什么区别?

时间:2018-03-03 06:47:52

标签: spring spring-security spring-web

以下选项之间有什么区别:

http.sessionManagement().disable()

import numpy as np
from nltk.corpus import wordnet

syn1 = wordnet.synsets('speed',pos='n')
syn2 = wordnet.synsets('performance',pos='n')

def getMaxPath(synset1,synset2):
    sim=[]
    a=[]
    b=[]
    for i in synset1:
        for j in synset2:
            sim.append(wordnet.path_similarity(i,j))
            a.append(i.name())   # save the names from synsets1 into list
            b.append(j.name())   # save the names from synsets2 into list

    max_sim=max(sim)
    idx=np.argmax(sim)
    s1=a[idx]        # get the name of synset1 for which path sim is max
    s2=b[idx]        # get the name of synset2 for which path sim is max
    return max_sim, s1, s2

getMaxPath(syn1, syn2)

似乎在第一种情况下会添加SessionManagementFilter并且什么都不做。而在第二种情况下,它根本不会被添加。因此,如果您不需要会话,似乎总是使用第二个选项会更好。但我不确定。

1 个答案:

答案 0 :(得分:0)

在行为方面,我注意到,正如您所说,将其设置为STATELESS会将SessionManagementConfigurer添加到SecurityBuilder并将其禁用则只是将null添加为{配置器。

这会影响在配置安全性时添加的SessionAuthenticationStrategy个实体。例如,即使对于无状态情况,启用CSRF保护也将添加CsrfAuthenticationStrategy,但对于禁用的会话管理则不会。{p>

总结:禁用它根本不会执行会话身份验证策略,但是启用它会在无状态情况下对每个经过身份验证的请求执行它。

希望它会有所帮助,这是基于个人经验(配置,尝试错误,调试)的。