【发布时间】:2018-07-21 12:31:35
【问题描述】:
我是一名移动开发人员,并且是 Spring Security 的新手,但无论如何它在我的 Web 应用程序中运行良好。但现在我遇到了一个问题。 让我们假设我的应用程序上下文是 x,我想让每个人都使用像
这样的休息服务端点这个端点在Controller中是这样定义的:
@Secured("permitAll")
@RequestMapping("/{id}")
public ModelAndView foo(@PathVariable("id") int id, HttpServletRequest request) {
Pet existingPet = petService.getPet(id);
ModelAndView mav = new ModelAndView();
if (null != existingPet) {
mav.addObject("petAttribute", existingPet);
mav.setViewName("b-show-pet");
}else{
mav.setViewName("b-accessdenied");
}
return mav;
}
在我的 web.xml 中有
<servlet-mapping>
<servlet-name>loc-app</servlet-name>
<url-pattern>/auth/**</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>loc-app</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<!-- Enable Spring Security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
现在,IMO 像
这样的 URIhttps://localhost:8443/x/15
应该被spring security拦截,但是controller里面service上面的注解@Secured("permitAll")应该是enable access。但它不起作用。所以,请告诉我我的代码有什么问题或者更好,这是最好的方法。问候,
【问题讨论】:
-
@Secured 注解用于授权,不用于身份验证。使用此注释,您可以检查当前用户(已经过身份验证的用户)是否有权使用此方法。你明白吗?我问我想确定我正确理解你想要实现的行为。
-
感谢 Alexander,老实说,我没有时间阅读所有 Spring Security 文档。我想允许每个人,我的意思是没有登录的人,访问我的网络服务。我认为 permitAll 将以这种方式工作。允许所有人访问该服务。
标签: spring security model-view-controller