Java 使用Jersey和ApacheShiro的RESTful Web服务
我第一次尝试开发一个简单的基于身份验证的REST服务。我正在尝试使用Tomcat8上的Jersey开发一个RESTful web应用程序。我使用ApacheShiro进行会话管理和授权。仅支持HTTPS。Java 使用Jersey和ApacheShiro的RESTful Web服务,java,post,jersey,shiro,Java,Post,Jersey,Shiro,我第一次尝试开发一个简单的基于身份验证的REST服务。我正在尝试使用Tomcat8上的Jersey开发一个RESTful web应用程序。我使用ApacheShiro进行会话管理和授权。仅支持HTTPS。 所有服务都需要身份验证,不允许来宾或匿名访问。请求可以通过两种方式进行身份验证 如果该用户属于web应用程序中的用户列表,则该用户从web浏览器登录,Shiro只需验证当前用户是否已登录并允许请求继续。这适用于应用程序本身提供的自定义UI 如果请求来自第三方应用程序,则每个服务请求的用户名/密
所有服务都需要身份验证,不允许来宾或匿名访问。请求可以通过两种方式进行身份验证
多值dmap
@POST
@Path("/create")
public String createResource(MultivaluedMap<String, String> parameters) {
System.out.println("Name of the resource: " + parameters.getFirst("resourceName"));
}
这适用于REST客户端,但在登录用户提交表单时不起作用。所有request.getParameter返回null
如果有人知道如何解决问题或更好地进行身份验证,请让我知道
@Override
public ContainerRequest filter(ContainerRequest cr) {
Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isAuthenticated()) {
//User is not logged in so get the authorization from header and authenticate
String auth = cr.getHeaderValue("authorization");
//Do Shiro authentication here.
}
return cr;
}
@POST
@Path("/create")
public String createResource(MultivaluedMap<String, String> parameters) {
System.out.println("Name of the resource: " + parameters.getFirst("resourceName"));
}
@POST
@Path("/create")
public String createResource(@Context HttpServletRequest request) {
System.out.println("Name of the resource: " + request.getParameter("resourceName"));
}