如何使用“SecurityUtils.getSubject()”修复

  1. 我尝试从位于某个 URL 的网络服务器读取数据。

  2. 在我们公司,我使用电子商务 API,它处理来自网络服务器的数据。

  3. 首先要检索数据,我需要从网络服务器创建数据池。

  4. 要创建数据池,我需要配置连接。

  5. “我需要配置连接”步骤的一部分是函数 getSession(),它使用 Shiro api(org.apache.shiro.SecurityUtils) 所以每次当我尝试与网络服务器建立连接并使用来自Web 服务器我成为一个异常“主线程中的异常”org.apache.shiro.UnavailableSecurityManagerException:调用代码无法访问 SecurityManager,绑定到 org.apache.shiro.util.ThreadContext 或作为 vm 静态单例。这是无效的应用程序配置。”

在写这个问题之前,我试着查看日志并阅读有关类和问题的信息,这些在此处进行了描述。

这一切都在 Windows 10、Java 8、Payara Server(Glassfish) 上运行,带有 EJBAPI 和一些电子商务 API。

导入我使用的


import org.apache.shiro.SecurityUtils;

import org.apache.shiro.session.InvalidSessionException;

import org.apache.shiro.session.Session;

import org.apache.shiro.subject.Subject;


ContentConfiguration conf = new ContentConfiguration(

                getSessionId(), 

                Constant.ENTITYMODELL, 

                Constant.EMPTY, 

                context);

protected static Session getSession()

{

    Subject subject = SecurityUtils.getSubject();

    if(subject.isAuthenticated())

        return subject.getSession();

    else

        return null;

}

错误信息


Exception in thread "main" org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton.  This is an invalid application configuration.

    at org.apache.shiro.SecurityUtils.getSecurityManager(SecurityUtils.java:123)

    at org.apache.shiro.subject.Subject$Builder.<init>(Subject.java:627)

    at org.apache.shiro.SecurityUtils.getSubject(SecurityUtils.java:56)

    at de.kolb.demo.data.ServiceLocator.getSessionId(ServiceLocator.java:15)

    at de.kolb.demo.logic.CommonTest.getCommonData(CommonTest.java:32)

    at de.kolb.demo.presentation.ContentDirector.main(ContentDirector.java:34)


紫衣仙女
浏览 140回答 1
1回答

MYYA

我想得到代表我公司情况的答案,但是我将描述的很多原则与 Shiro hub 中的常见问题有关。1.我的问题与getSessionId()&nbsp;在这里输入图片描述有关2.getSessionId()这是公司API的一个功能。在此功能中,我调用org.apache.shiro.SecurityUtils.getSubject()&nbsp;enter link description here这时我想到了exception Message&nbsp;No SecurityManager accessible to the calling code...。比起我在这里查看 Shiro 文档,请在此处输入链接描述。在那里我发现,每次当我使用应用程序时,它使用身份验证和自动化,我需要用“领域”对象配置“SecurityManager”。4.这是shiro网站上的一个小说明和详细说明在这里输入链接描述
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java