You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shiro.apache.org by "gejian (JIRA)" <ji...@apache.org> on 2017/08/30 09:32:00 UTC

[jira] [Updated] (SHIRO-635) confilict with spring-boot-starter-data-jpa

     [ https://issues.apache.org/jira/browse/SHIRO-635?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

gejian updated SHIRO-635:
-------------------------
    Description: 
i am using the shiro-spring-boot-web-starter:1.4.0 with spring boot.
the attachment is a maven based project.
the example class is com.ankin.dajucheng.controller.ClassificationController.
when spring-data-jpa is used, the method:queryClassifications in the controller class of spring mvc can not mapping to the correct method, if you enter 'http://localhost:8500/classification/simple', it will return 404.
But if i remove the shiro annotations(@RequiresRoles) in the controller class, then if you enter 'http://localhost:8500/classification/simple', it will return the correct string 'simple:success';
the datasource is set to jdbc:mysql://192.168.1.118:3306/nmx in application.properties, you can change to any mysql database url. i haven't add any entity, so every avaliable database is ok.

@RestController
@RequestMapping("/classification")
public class ClassificationController {

	private static final Logger logger = LoggerFactory.getLogger(ClassificationController.class);

	@RequestMapping(value = "/simple", method = RequestMethod.GET)
	public String queryClassifications(@RequestParam(name = "id", defaultValue = "0") Integer parentId) {
		return "simple:success";
	}

	@RequiresRoles("ADMIN")
	@RequestMapping(method = RequestMethod.POST)
	@ResponseStatus(HttpStatus.CREATED)
	public String saveClassification(String classification) {
		return null;
	}

	@RequiresRoles("ADMIN")
	@RequestMapping(method = RequestMethod.PUT)
	public String updateClassification(String classification) {
		return null;
	}

}

@SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class)
public class DajuchengApplication extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return configureApplication(builder);
	}

	public static void main(String[] args) {
		configureApplication(new SpringApplicationBuilder()).run(args);
	}

	private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
		return builder.sources(DajuchengApplication.class).bannerMode(Banner.Mode.OFF);
	}

	@Bean
	public Realm realm() {
		return new JpaRealm();
	}

	@Bean
	public ShiroFilterChainDefinition shiroFilterChainDefinition() {
		DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
		chainDefinition.addPathDefinition("/**", "anon");
		return chainDefinition;
	}
}

debug=false
server.port=8500
server.context-path=/
server.tomcat.uri-encoding=UTF-8
server.session.timeout=43200
spring.http.encoding.charset=UTF-8
spring.http.encoding.force=true

#spring-boot-data-jpa\u9ED8\u8BA4\u4E3A\u4E0B\u5212\u7EBF, \u8FD9\u91CC\u6539\u4E3A\u4E0E\u6570\u636E\u5E93\u5B57\u6BB5\u5B8C\u5168\u4E00\u81F4
spring.jpa.open-in-view=false
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

shiro.loginUrl=/dispatch.jsp
shiro.unauthorizedUrl=/unauthorized.jsp

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:mysql://192.168.1.118:3306/nmx?useSSL=false&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&useServerPrepStmts=true&cachePrepStmts=true&cacheCallableStmts=true&prepStmtCacheSize=250&prepStmtCacheSqlLimit=1024&useConfigs=maxPerformance
spring.datasource.username=ankin
spring.datasource.password=anKins10#410

  was:
i am using the shiro-spring-boot-web-starter:1.4.0 with spring boot.
the attachment is a maven based project.
the example class is com.ankin.dajucheng.controller.ClassificationController.
when spring-data-jpa is used, the method:queryClassifications in the controller class of spring mvc can not mapping to the correct method, if you enter 'http://localhost:8500/classification/simple', it will return 404.
But if i remove the shiro annotations(@RequiresRoles) in the controller class, then if you enter 'http://localhost:8500/classification/simple', it will return the correct string 'simple:success';
the datasource is set to jdbc:mysql://192.168.1.118:3306/nmx in application.properties, you can change to any mysql database url. i haven't add any entity, so every avaliable database is ok.


> confilict with spring-boot-starter-data-jpa
> -------------------------------------------
>
>                 Key: SHIRO-635
>                 URL: https://issues.apache.org/jira/browse/SHIRO-635
>             Project: Shiro
>          Issue Type: Bug
>          Components: Integration: Spring
>    Affects Versions: 1.4.0-RC2
>         Environment: win10, intellij idea
>            Reporter: gejian
>            Assignee: Les Hazlewood
>         Attachments: xiaojucheng.7z
>
>   Original Estimate: 1h 1m
>  Remaining Estimate: 1h 1m
>
> i am using the shiro-spring-boot-web-starter:1.4.0 with spring boot.
> the attachment is a maven based project.
> the example class is com.ankin.dajucheng.controller.ClassificationController.
> when spring-data-jpa is used, the method:queryClassifications in the controller class of spring mvc can not mapping to the correct method, if you enter 'http://localhost:8500/classification/simple', it will return 404.
> But if i remove the shiro annotations(@RequiresRoles) in the controller class, then if you enter 'http://localhost:8500/classification/simple', it will return the correct string 'simple:success';
> the datasource is set to jdbc:mysql://192.168.1.118:3306/nmx in application.properties, you can change to any mysql database url. i haven't add any entity, so every avaliable database is ok.
> @RestController
> @RequestMapping("/classification")
> public class ClassificationController {
> 	private static final Logger logger = LoggerFactory.getLogger(ClassificationController.class);
> 	@RequestMapping(value = "/simple", method = RequestMethod.GET)
> 	public String queryClassifications(@RequestParam(name = "id", defaultValue = "0") Integer parentId) {
> 		return "simple:success";
> 	}
> 	@RequiresRoles("ADMIN")
> 	@RequestMapping(method = RequestMethod.POST)
> 	@ResponseStatus(HttpStatus.CREATED)
> 	public String saveClassification(String classification) {
> 		return null;
> 	}
> 	@RequiresRoles("ADMIN")
> 	@RequestMapping(method = RequestMethod.PUT)
> 	public String updateClassification(String classification) {
> 		return null;
> 	}
> }
> @SpringBootApplication(exclude = ErrorMvcAutoConfiguration.class)
> public class DajuchengApplication extends SpringBootServletInitializer {
> 	@Override
> 	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
> 		return configureApplication(builder);
> 	}
> 	public static void main(String[] args) {
> 		configureApplication(new SpringApplicationBuilder()).run(args);
> 	}
> 	private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
> 		return builder.sources(DajuchengApplication.class).bannerMode(Banner.Mode.OFF);
> 	}
> 	@Bean
> 	public Realm realm() {
> 		return new JpaRealm();
> 	}
> 	@Bean
> 	public ShiroFilterChainDefinition shiroFilterChainDefinition() {
> 		DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
> 		chainDefinition.addPathDefinition("/**", "anon");
> 		return chainDefinition;
> 	}
> }
> debug=false
> server.port=8500
> server.context-path=/
> server.tomcat.uri-encoding=UTF-8
> server.session.timeout=43200
> spring.http.encoding.charset=UTF-8
> spring.http.encoding.force=true
> #spring-boot-data-jpa\u9ED8\u8BA4\u4E3A\u4E0B\u5212\u7EBF, \u8FD9\u91CC\u6539\u4E3A\u4E0E\u6570\u636E\u5E93\u5B57\u6BB5\u5B8C\u5168\u4E00\u81F4
> spring.jpa.open-in-view=false
> spring.jpa.hibernate.ddl-auto=none
> spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
> shiro.loginUrl=/dispatch.jsp
> shiro.unauthorizedUrl=/unauthorized.jsp
> spring.datasource.driver-class-name=com.mysql.jdbc.Driver
> #spring.datasource.type=com.zaxxer.hikari.HikariDataSource
> spring.datasource.url=jdbc:mysql://192.168.1.118:3306/nmx?useSSL=false&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&useServerPrepStmts=true&cachePrepStmts=true&cacheCallableStmts=true&prepStmtCacheSize=250&prepStmtCacheSqlLimit=1024&useConfigs=maxPerformance
> spring.datasource.username=ankin
> spring.datasource.password=anKins10#410



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)