【问题标题】:Upgrading Spring Security breaks a project [duplicate]升级 Spring Security 会破坏项目 [重复]
【发布时间】:2017-07-07 02:39:34
【问题描述】:

我有一个很久以前创建的模板项目。项目可以在:here

所有库都已更新到新版本,期待 Spring Security。如果您检查主分支转到localhost:8080/springdemo/index.htm,应用程序会将您重定向到登录页面,一旦您输入 demouser/demopass 或 userdemo/passdemo,您将登录并重定向到 index.htm。

问题是当我更新到 Spring Security 4.2.3.RELEASE 应用程序不起作用。此代码位于 spring-security-update 分支上。我尝试了很多在线资源。弄乱了 csrf 令牌并暂时禁用它,但无法让它工作。

有人知道为什么 spring security 不起作用?

提前致谢

【问题讨论】:

    标签: java spring spring-security


    【解决方案1】:

    这是因为从版本 3 迁移到版本 4。要使所有这些工作正常,您应该这样做:

    1) 在您的 index.jsp 将表单操作从 action='/springdemo/j_spring_security_check' 更改为 action='/springdemo/login'

    2) 在您的index.jsp 中将输入名称从name='j_username' 更改为name='username'name='j_password' 相同 -> name='password'

    3) 在您的 index.jsp 中将注销 url 从 href="j_spring_security_logout" 更改为 href="logout"

    为我工作。希望对你有帮助

    【讨论】:

    • 非常感谢。当 csrf 令牌被禁用时,这一切都有效。一旦我在 login.jsp 中取消注释并在 applicationContext-security.xml 中重新打开它,注销将不起作用。注销似乎需要 csfr 令牌。再次感谢你给了我一个突破。
    • @IvanDejanovic,是的,根据 spring 文档:添加 CSRF 将更新 LogoutFilter 以仅使用 HTTP POST。这确保了注销需要 CSRF 令牌,并且恶意用户无法强制注销您的用户。 这意味着您需要使用带有 csrf 令牌的 POST 表单进行注销,类似于登录功能
    • 顺便说一句,ajax 调用也不起作用。 Csrf 令牌需要
    • @IvanDejanovic,要修复 ajax 请求,您可以通过 this spring manual。希望对您有所帮助!
    • 您可能想要添加指向文档的链接,清楚地说明需要升级的内容。见docs.spring.io/spring-security/site/migrate/current/3-to-4/…
    猜你喜欢
    • 2018-09-27
    • 2021-06-07
    • 2012-04-01
    • 1970-01-01
    • 2017-10-20
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多