0
私はshiroフレームワークを探索しようとしています。認証は正常に動作しています。私は許可する際に問題に直面しています。私はshiro注釈@RequiresRolesを認可のために使用しています。注釈を使用していますが、指定した役割だけを許可するわけではありません。すべての役割を許可しています。私が試した下のコードを見つけてください。私はジャージーとシロを使用しています。@RequiresRoles注釈はshiroで動作しません
Javaコード: -
package com.somecompany.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresRoles;
@Path("/test")
public class HelloWorldService {
@GET
@Path("/{param}")
@RequiresRoles(value= {"admin_role"})
public Response getMsg(@PathParam("param") String msg) {
String output = "Jersey say : " + msg;
System.out.println(SecurityUtils.getSubject().hasRole("admin_role"));
return Response.status(200).entity(output).build();
}
}
のWeb.xml
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.somecompany.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
のpom.xml
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.3.2</version>
</dependency>
<!-- Included commons logging for shiro -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-aspectj</artifactId>
<version>1.3.2</version>
</dependency>
shiro.ini
[users]
root = root,root_role
admin = admin,admin_role
test = test,test_role
[roles]
admin = *
[urls]
# The 'urls' section is used for url-based security
# in web applications. We'll discuss this section in the
# Web documentation
/rest/** = authcBasic
私はこのアノテーションを認識するための方法がないと思います。「DynamicFeature」を作成する必要があります。https://gist.github.com/caseyscarborough/f4266646f727fa9f7cc6 –