Spring security - 允许导航但保护某些页面

Posted

技术标签:

【中文标题】Spring security - 允许导航但保护某些页面【英文标题】:Spring security - allow navigation but protecting some pages 【发布时间】:2014-06-18 12:34:01 【问题描述】:

我希望允许用户浏览网站,但限制对某些操作/页面的访问,他必须在这些操作/页面上登录才能这样做。如何使用 spring 安全配置来实现这一点?

我不确定弹簧安全是否可行。

【问题讨论】:

您看过参考手册和一些示例应用程序吗?你的问题实在是太宽泛了。 是的,我已经花了几个小时来解决这个问题......并且只找到了相反的例子......我的意思是,除非他登录,否则这些例子会在整个地方阻止用户我宁愿让用户做所有事情,然后让他在某个时间点登录。 您的意思仍然不是很清楚 - 您可以使用基本的访问控制配置选项来限制对应用程序的尽可能多或尽可能少的访问。 【参考方案1】:

在您的 spring 安全配置中,您可以执行以下操作:

<intercept-url pattern="/admin/**" access="ROLE_ADMIN" requires-channel="https" />
<intercept-url pattern="/secure/**" access="ROLE_USER, ROLE_ADMIN" requires-channel="https" />
<intercept-url pattern="/**" access="permitAll" requires-channel="any" />

然后在所有受保护的页面前加上 /secure/。这将允许人们浏览整个站点,除了 /secure/ 和 /admin/ 中的页面

此外,您可以使用IS_AUTHENTICATED_FULLY 代替ROLE_USER(而不是IS_AUTHENTICATED_REMEMBEREDIS_AUTHENTICATED_ANONYMOUSLY

requires-channel 仅在您使用 https 时使用,如果您尝试保护内容,则应该使用它。

【讨论】:

以上是关于Spring security - 允许导航但保护某些页面的主要内容,如果未能解决你的问题,请参考以下文章

用于ajax调用的spring security csrf保护

如何保护 Spring Security 中受 IP 地址限制的匿名访问?

Spring Boot - Spring Security CSRF 保护未在登录页面中注入令牌

Spring Security - 只允许带有前缀的请求

Grails、Spring Security 和 Angular JS - 如何保护 URL?

用于 Spring Security 和 AngularJS 的 CSRF/XSRF 保护