当前位置: 首页 > 知识库问答 >
问题:

在spring中提供对请求映射/控制器的匿名访问

呼延博易
2023-03-14

我很难弄清楚问题出在哪里。

我认为最简单的方法是使用一个带有请求映射的控制器。

移动应用程序有它自己的身份验证系统,所以访问url需要是开放的/匿名的。

我已经设置了以下内容:

@Controller
public class UpdateService
{
    @Autowired
    private Config _appConfig;

    @Autowired
    private SubscriptionsHandler _subscriptionsHandler;

    @RequestMapping(value = "/events/update")
    @ResponseBody
    public String UpdateEventList(String token) throws SQLException
    {
        ExternalUpdateHandler updateHandler = new ExternalUpdateHandler(_appConfig, _subscriptionsHandler);
        updateHandler.MaybeUpdateBasedOn(token);
        return "";
    }
}
<http pattern="/events/update" security="none" />
<http auto-config="true" entry-point-ref="authenticationEntryPoint">
    <!-- Allow access to the login page by unauthenticated users -->
    <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/events/update" access="IS_AUTHENTICATED_ANONYMOUSLY" />

    <intercept-url pattern="/**" access="ROLE_USER" />
    ....
</http>

在日志中,当服务器运行时,我会得到以下消息:

2014-06-25 17:23:40,693[RMI TCP连接(3)-127.0.0.1]信息org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping-将“{[/events/update],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}”映射到公共java.lang.String...updateService.updateEventList(java.lang.String)抛出

这似乎表明请求映射正在按预期工作。

在关闭该请求的安全性之前,我获取了登录表单作为对curling的响应。这似乎表明安全切换也起到了作用。

我有点没主意了!我们将不胜感激。干杯

我正在使用下面的卷曲:

curl -i http://localhost:8100/events/update

dispatcher-servlet.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
                       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

</beans>

这里还引用了dispatcher servlet:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app id="compass"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">

    <display-name>compass</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <async-supported>true</async-supported>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Default session timeout -->
    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>

</web-app>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>

共有1个答案

蔚琦
2023-03-14

因为您已经在/api/*部署了Spring Dispatcher Servlet,所以您的所有Spring控制器URL都将在该文件下。因此,在测试用例中,只需执行以下操作:

http://localhost:8100/api/events/update

 类似资料:
  • 我试图实现的是从main方法获取控制器实例,这样我就可以从另一个类调用控制器的方法并更新fxml。总之,这是我的代码: 主要类别: 我的控制器类: 试图调用控制器方法的类: 下面是我的错误信息: ConnectionHandling类:

  • 有类似的主题,但它们都使用xml配置文件。我之所以写这个问题,是因为我使用了注释。 我在运行应用程序时遇到问题: 在尝试设置Spring servlet时,获取WARNorg.springframework.web.servlet.PageNotes-未找到HTTP请求与URI的映射 尝试在服务器上运行时出现错误404 以下是我的代码(跳过包和导入): 1)初始化器 2)应用配置 3)控制器 控制

  • 是的。我知道这是一个熟悉的问题。我已经研究了其他解决方案,但它们没有帮助我。我正在尝试用Spring 4、HiberNate 5、My Sql和Angular JS 1. x构建Spring MVC应用程序 问题:如图所示,当我运行应用程序时,它按照预期index.jsp文件,然后我输入“”以获得网页“adduser.html”。嘣,它会抛出以下错误“在DispatcherServlet中,没有找

  • 问题内容: 是否可以在两个不同的post方法的请求映射中使用相同的url,仅请求正文有所不同。 问题答案: 不,您不能在具有不同请求主体类型但介质类型相同的post方法的请求映射中提供相同的url。以下将不起作用: 如果您使用不同的媒体类型,那么它将。下面将工作: 您在至少一项条件上应有所不同;

  • 当存在多个时,视图解析器如何确定要加载哪个控制器。 我正在从头开始学习Spring,正如我的导师所说,我们只需要一个带有注释的控制器类。如果我有多个带有注释的类,以及如何确定要加载哪个控制器类,因为Spring是Singleton,并且只有一个控制器类存在。