问题描述
项目是CS,通过webservice来调用接口。登录时的代码SubjectcurrentUser=SecurityUtils.getSubject();Sessionsession=currentUser.getSession();session.setTimeout(3600000);session.setAttribute(Constant.VALIDATE_CODE,“123”);登录成功后当我在调用其他接口时Sessionsession=SecurityUtils.getSubject().getSession();Stringu=session.getAttribute(Constant.SESSION_USER);u为空想了好长时间不知道怎么回事,是不是因为shiro的局限性而不能用于webservice但是想想又不是这样的session这个对象是shiro内部的对象。
解决方案
解决方案二:
登录成功后在调用其他接口时SubjectcurrentUser=SecurityUtils.getSubject();Sessionsession=currentUser.getSession();Stringu=session.getAttribute(Constant.SESSION_USER);
解决方案三:
引用1楼wangjunhui586的回复:
登录成功后在调用其他接口时SubjectcurrentUser=SecurityUtils.getSubject();Sessionsession=currentUser.getSession();Stringu=session.getAttribute(Constant.SESSION_USER);
在webservice中不可以,session中连之前设置的key都没有
解决方案四:
登录成功后在调用其他接口时SubjectcurrentUser=SecurityUtils.getSubject();//Sessionsession=currentUser.getSession();//this指servletjavax.servlet.ServletContextapplication=this.getServletContext();//将application当成application对象来使用//Stringu=session.getAttribute(Constant.SESSION_USER);Stringu=application.getAttribute(Constant.SESSION_USER);