我正在使用App Engine标准环境。我想使所有网址仅访问管理员。
这是我的web.xml
,但是这个对我不起作用,我在本地开发中对其进行了测试。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>welcome</welcome-file>
</welcome-file-list>
<!-- OBJECTIFY -->
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ENDPOINTS -->
<servlet>
<servlet-name>EndpointsServlet</servlet-name>
<servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>
org.example.test.API.Account
</param-value>
</init-param>
</servlet>
<!-- Route API method requests to the backend. -->
<servlet-mapping>
<servlet-name>EndpointsServlet</servlet-name>
<url-pattern>/_ah/api/*</url-pattern>
</servlet-mapping>
<!-- Security -->
<security-role>
<role-name>admin</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>admin</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>
我在这里Security and Authentication
上查看了文档请让我知道为什么这个不适合我。我做错了什么?
第二件事我想问的是,如果我保护所有URL仅访问管理员,我是否仍可以在Android中使用云终结点库,而我的应用程序可以在没有任何登录的情况下访问终结点?
我正在使用java8
答案 0 :(得分:1)
由于使用的是Enpoints Framework,因此必须通过the Endpoints Framework docs中所述的方法来保护API。
用户将调用API代理,而不是直接调用应用程序上的端点,因此您必须保护API代理端点。
您可以在docs中看到有关使用Endpoints Framework for GAE时如何处理请求的详细说明。