【问题标题】:open rest endpoint with spring security具有弹簧安全性的开放休息端点
【发布时间】:2018-07-21 12:31:35
【问题描述】:

我是一名移动开发人员,并且是 Spring Security 的新手,但无论如何它在我的 Web 应用程序中运行良好。但现在我遇到了一个问题。 让我们假设我的应用程序上下文是 x,我想让每个人都使用像

这样的休息服务端点

https://localhost:8443/x/12

这个端点在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 像

这样的 URI

https://localhost:8443/x/15

应该被spring security拦截,但是controller里面service上面的注解@Secured("permitAll")应该是enable access。但它不起作用。所以,请告诉我我的代码有什么问题或者更好,这是最好的方法。问候,

【问题讨论】:

  • @Secured 注解用于授权,不用于身份验证。使用此注释,您可以检查当前用户(已经过身份验证的用户)是否有权使用此方法。你明白吗?我问我想确定我正确理解你想要实现的行为。
  • 感谢 Alexander,老实说,我没有时间阅读所有 Spring Security 文档。我想允许每个人,我的意思是没有登录的人,访问我的网络服务。我认为 permitAll 将以这种方式工作。允许所有人访问该服务。

标签: spring security model-view-controller


【解决方案1】:

安全注解用于授权目的,这更适合您的需要(如果您想使用 xml 配置):

<http>
    <intercept-url pattern="/yoururl" access="permitAll" />
</http>

【讨论】:

  • 好的,是的,Alexander,我知道您可以将它与 /my-bills 之类的标准 URI 一起使用,但哪种方式可以允许像 /{id} 这样的 uri 模式?我的意思是,不会与其他标签崩溃,例如
  • 我手头没有 chek 的项目,但 ant mathers 应该支持正则表达式。阅读:docs.spring.io/spring/docs/current/javadoc-api/org/…
  • 请注意,更具体的拦截器应该在顶部,bcus spring 将按照公布的顺序检查它们,直到第一次巧合发生。
猜你喜欢
  • 2012-01-22
  • 2012-07-04
  • 2019-10-07
  • 2020-03-19
  • 2016-10-06
  • 2016-11-19
  • 2011-07-03
  • 2019-10-14
  • 2013-04-12
相关资源
最近更新 更多