我有以下控制器:
@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
一起工作吗?
答案 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>