2016-06-13 20 views
0

我試圖將Apache shiro的RBAC身份驗證邏輯添加到我的Spring引導應用程序中。我正在使用Shiro.ini文件。 但是,當我嘗試實例化IniSecurityManagerFactory(加載shiro.ini文件)時面臨IllegalArgumentException。當我嘗試實例化Spring引導中的IniSecurityManagerFactory類時遇到IllegalArgumentException maven項目

這裏是我的代碼:

@Controller 
    @RequestMapping("/ServiceDesigner/User") 
    public class UserTest { 
      @RequestMapping("/test") 
      @ResponseBody 
      public String create(String username,String password) throws IOException { 
       Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); 
       SecurityManager securityManager = factory.getInstance(); 
       SecurityUtils.setSecurityManager(securityManager); 

        UsernamePasswordToken token = new UsernamePasswordToken(username, password); 

        Subject currentUser = SecurityUtils.getSubject(); 

        try { 
         currentUser.login(token); 

        } catch (Exception uae) { 
         System.out.println(uae.getMessage()); 
        } 

        return "Authenticated"; 
        } 

堆棧跟蹤:

java.lang.IllegalArgumentException: Line argument must contain a key and a value. Only one string token was found. 
at org.apache.shiro.config.Ini$Section.splitKeyValue(Ini.java:542) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini$Section.toMapProps(Ini.java:567) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini$Section.<init>(Ini.java:464) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini$Section.<init>(Ini.java:445) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini.addSection(Ini.java:302) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini.load(Ini.java:334) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini.load(Ini.java:287) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini.load(Ini.java:275) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.Ini.loadFromPath(Ini.java:244) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.IniFactorySupport.loadDefaultClassPathIni(IniFactorySupport.java:69) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.IniFactorySupport.resolveIni(IniFactorySupport.java:92) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.config.IniFactorySupport.createInstance(IniFactorySupport.java:108) ~[shiro-core-1.2.2.jar:1.2.2] 
at org.apache.shiro.util.AbstractFactory.getInstance(AbstractFactory.java:47) ~[shiro-core-1.2.2.jar:1.2.2] 
at com.verizon.servicedesginer.api.UserTest.create(UserTest.java:89) ~[classes/:na] 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_51] 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_51] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_51] 
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_51] 
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) ~[spring-webmvc-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) ~[tomcat-embed-core-8.0.33.jar:8.0.33] 

我會很感激任何建設性的反饋。

+0

它需要'.ini'文件中的兩個參數,如錯誤跟蹤中所述,但無法找到第二個參數,請提供'.ini'文件 – piyushj

+0

在哪一行中出現此錯誤? UserTest.java:89指向你共享代碼片段中的哪一行 – sathya

回答

相關問題