【问题标题】:Facing IllegalArgumentException when I try to instantiate IniSecurityManagerFactory class in spring-boot maven project当我尝试在 spring-boot maven 项目中实例化 IniSecurityManagerFactory 类时遇到 IllegalArgumentException
【发布时间】:2016-10-13 10:50:21
【问题描述】:

我正在尝试将 Apache shiro 的 RBAC 身份验证逻辑添加到我的 Spring 引导应用程序中。我正在使用 Shiro.ini 文件。 但是当我尝试实例化 IniSecurityManagerFactory(加载 shiro.ini 文件)时遇到 IllegalArgumentException。

这是我的代码:

 @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]

如果有任何建设性的反馈,我将不胜感激。

【问题讨论】:

  • 它需要.ini文件中的两个参数,如错误跟踪中所述,但找不到第二个参数,请提供.ini文件
  • 您在哪一行收到此错误? UserTest.java:89 指向您共享的代码 sn-p 中的哪一行

标签: java maven spring-boot shiro rbac


【解决方案1】:

听起来您的 .ini 文件可能有问题?它符合这里的标准吗? https://shiro.apache.org/static/1.2.1/apidocs/org/apache/shiro/config/Ini.html

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2022-10-05
    • 2021-04-04
    • 2016-08-11
    • 2022-01-02
    • 2020-04-17
    相关资源
    最近更新 更多