Spring MVC + Security。 @Secured + @RequestMapping

时间:2012-10-30 12:57:49

标签: java spring-mvc spring-security

我有以下控制器:

@Controller
@RequestMapping("/api")
public class APIProvider {
    @Secured(value = {"isAuthenticated()"})
    @RequestMapping(value="/secure/{app}/{query}", method=RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<String> getList(HttpServletRequest request,
        @PathVariable("app") String app,
        @PathVariable("query") String query) {
        //....DO SMTH
    }
}

尝试访问所需的网址时,我收到“找不到网页”。

删除@Secured注释,修复问题。所以Request映射是对的。 同样对于@Secured注释,我在security-config.xml中添加了以下指令:

<security:global-method-security secured-annotations="enabled"/>

有人可以帮助我让@Secured + @RequestMapping一起工作吗?

3 个答案:

答案 0 :(得分:0)

请改为@Secured("IS_AUTHENTICATED_FULLY")

答案 1 :(得分:0)

在security.xml文件中,在&lt; security:global-method-security secured-annotations =“enabled”/&gt; 之后添加以下行:

<http use-expressions="true">
    <intercept-url pattern="/api/secure/**" access="isFullyAuthenticated() />
</http>

这将确保在用户完全通过身份验证后,将提供所有/ api /安全请求。

答案 2 :(得分:0)

我认为您还需要包含安全表达式处理程序。

<security:global-method-security pre-post-annotations="enabled" >
    <security:expression-handler ref="expressionHandler"/>
</security:global-method-security>

<beans:bean id="expressionHandler"   class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHa ndler">
    <beans:property name="permissionEvaluator" ref="permissionEvaluator"/>
</beans:bean>