1

我有以下控制器:

@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
    }
}

尝试访问所需的 URL 时,我得到“找不到页面”。

删除@Secured注释,解决问题。所以请求映射是正确的。同样对于@Secured注释,我在 security-config.xml 中添加了以下指令:

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

谁能帮我一起做@Secured+@RequestMapping工作?

4

3 回答 3

0

在您的 security.xml 文件中,在<security:global-method-securitysecured-annotations="enabled"/>之后添加以下行:

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

这将确保,如果用户完全通过身份验证,您的所有 /api/secure 请求都将得到服务。

于 2012-11-01T17:11:52.040 回答
0

试试这个@Secured("IS_AUTHENTICATED_FULLY")

于 2012-10-30T13:14:34.350 回答
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>
于 2012-11-04T07:27:55.743 回答