Spring security Spring安全性不工作,需要帮助了解原因

Spring security Spring安全性不工作,需要帮助了解原因,spring-security,Spring Security,我试图理解Spring安全性,但我的页面可以在不登录的情况下访问,我不明白为什么 “安全”页面位于WEB-INF/pages/secure中,可使用http://localhost:8080/secret。这应该不允许访问,但目前允许 /这里是安全地图 @Controller public class HelloWorld { ... @RequestMapping("/secret") public String showSecret(ModelMap model)

我试图理解Spring安全性,但我的页面可以在不登录的情况下访问,我不明白为什么

“安全”页面位于WEB-INF/pages/secure中,可使用
http://localhost:8080/secret
。这应该不允许访问,但目前允许

/这里是安全地图

@Controller
public class HelloWorld {

    ...

    @RequestMapping("/secret")
    public String showSecret(ModelMap model) {
        return "secure/secretPage";
    }

}
web.xml

...
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext-security.xml
        /WEB-INF/springmvc-config.xml
    </param-value>
</context-param>
...
。。。
上下文配置位置
/WEB-INF/applicationContext-security.xml
/WEB-INF/springmvc-config.xml
...
applicationContext-security.xml

<http auto-config="true">
    <form-login login-processing-url="/j_spring_security_check"
    login-page="/login"
    authentication-failure-url="/login?login_error=t"/>
    <logout logout-url="/j_spring_security_logout"/>
    <intercept-url pattern="/pages/secure/**" access="IS_AUTHENTICATED_FULLY" requires-channel="https"/>
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
</http>

<authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="userAccountDetailsService"/>
</authentication-manager>

用户帐户详细信息服务

@Service("userAccountDetailsService") // enables component to be found to <component-scan/>
public class UserAccountDetailsService implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        throw new UsernameNotFoundException("Could not find user");
    }

}
@Service(“userAccountDetailsService”)//使组件能够被找到
公共类UserAccountDetailsService实现UserDetailsService{
@凌驾
public UserDetails loadUserByUsername(字符串用户名)引发UsernameNotFoundException{
抛出新的UsernameNotFoundException(“找不到用户”);
}
}

/login页当前不存在。反正没有用户。我只是想暂时禁止访问。

您所点击的URL是
/secure
,而不是
/pages/secure
,但是在Spring安全配置中,您保护的是
/pages/secure/**
,而不是
/secure/**
。请将拦截URL从
/pages/secure/**
更改为
/secure/**
,然后重试。

由于某些原因无法工作。但是,安全被放置在/pages/secure中。我尝试将其移动到/WEB-INF/secure(samelevel as/WEB-INF/pages),但由于某些原因,pages/被视为root:HTTP Status 404-/WEB-INF/pages/secure/secretPage.jspI将您的代码稍微简化后复制到一个示例应用程序中,效果良好。然后单击页面上显示的链接。您将被重定向到登录页面(如预期)。完整的源代码是可用的。您的配置中的其他地方似乎有错误。如果您仍然面临错误,请发布完整的Spring MVC和Spring安全配置以及完整文件夹结构的屏幕截图(不仅仅在WEB-INF中)。我不知道问题出在哪里,但通过删除和重写所有配置文件,问题得到了“解决”。