为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

紫衣仙女 2022-11-30 11:12:40
我尝试从位于某个 URL 的网络服务器读取数据。在我们公司,我使用电子商务 API,它处理来自网络服务器的数据。首先要检索数据,我需要从网络服务器创建数据池。要创建数据池,我需要配置连接。“我需要配置连接”步骤的一部分是函数 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)
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

我想得到代表我公司情况的答案,但是我将描述的很多原则与 Shiro hub 中的常见问题有关。

1.我的问题与getSessionId() 在这里输入图片描述有关

2.getSessionId()这是公司API的一个功能。在此功能中,我调用org.apache.shiro.SecurityUtils.getSubject() enter link description here

  1. 这时我想到了exception Message No SecurityManager accessible to the calling code...。比起我在这里查看 Shiro 文档,请在此处输入链接描述。在那里我发现,每次当我使用应用程序时,它使用身份验证和自动化,我需要用“领域”对象配置“SecurityManager”。

    4.这是shiro网站上的一个小说明和详细说明在这里输入链接描述


查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信