Spring安全性 - 基于用户角色提供不同内容的相同页面

时间:2010-05-24 09:06:30

标签: spring spring-security

我试图搜索与我的问题相关的任何以前的帖子,但无法找到任何。我有一个场景,页面处理3个不同的场景,其中一个不起作用。此页面返回不同的内容,具体取决于用户是否经过身份验证或匿名。

localhost:8080 / myApp / muUrl?test = authenticatedContent - >用于场景1& 2 localhost:8080 / myApp / muUrl?test = anonymousContent - >用于场景3 情形:

1)经过身份验证的用户访问页面网址 - 用户显示正确的信息。工作正常

2)匿名用户使用需要身份验证的参数访问页面URL - 如果是匿名的,则对他们正在访问的内容进行第二级检查。例如,基于GET参数,有自定义逻辑来确定是否必须对用户进行身份验证。在这种情况下,页面被重定向到登录页面(WORKS罚款)。

3)匿名用户使用不需要身份验证的参数访问页面URL - 在这种情况下,我获得SAvedRequest并重定向到URL,这将带我进入无限循环。

我是否遗漏了一些非常明显的事情,或者在AuthenticationProcessFilterEntryPoint中是否有办法说“不要重定向到LOGIN页面但是要处理它”?

感谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了一个解决方案(有人在Spring论坛上向我建议)。 我们的想法是在控制器中使用@PreAuthorize注释,如下所述:see here

请参阅下面的代码示例:

@RequestMapping("/")
@PreAuthorize("isAuthenticated()")
public String authenticatedHomePage() {
    return "authenticatedHomePage";
}

@RequestMapping("/")
public String homePage() {
    return "homePage";
}