UDN-企业互联网技术人气社区

板块导航

浏览  : 2290
回复  : 5

[移动平台] invalid secrity token尝试了论坛里的方法,第二种行不通。

[复制链接]
lanzhm3的头像 楼主
发表于 2015-10-19 20:49:46 | 显示全部楼层 |阅读模式
下面是报错代码
  1. 严重: Servlet.service() for servlet [CoverPlanServlet] in context with path [/portal] threw exception
  2. nc.bs.framework.exception.FrameworkSecurityException: invalid secrity token(null)
  3.         at nc.bs.framework.server.SecurityAspect.aroundMethod1(SecurityAspect.java:38)
  4.         at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
  5.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  6.         at java.lang.reflect.Method.invoke(Unknown Source)
  7.         at nc.bs.framework.aop.rt.AdviceHolder.invoke(AdviceHolder.java:182)
  8.         at nc.bs.framework.aop.rt.MethodProceedingJoinpoint.proceed(MethodProceedingJoinpoint.java:129)
  9.         at nc.bs.framework.aop.rt.MethodProceedingJoinpoint.proceed(MethodProceedingJoinpoint.java:135)
  10.         at nc.bs.framework.aop.rt.AspectedProxy.invoke(AspectedProxy.java:59)
  11.         at com.sun.proxy.$Proxy123.getCoverPlanList(Unknown Source)
  12.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  13.         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  14.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  15.         at java.lang.reflect.Method.invoke(Unknown Source)
  16.         at nc.bs.framework.ejb.CMTProxyImpl.delegate(CMTProxyImpl.java:22)
  17.         at nc.itf.framework.ejb.CMTProxyEjbBean.delegate(CMTProxyEjbBean.java:44)
  18.         at nc.itf.framework.ejb.CMTProxy_Local.delegate(CMTProxy_Local.java:70)
  19.         at sun.reflect.GeneratedMethodAccessor519.invoke(Unknown Source)
  20.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  21.         at java.lang.reflect.Method.invoke(Unknown Source)
  22.         at nc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:57)
  23.         at nc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:36)
  24.         at com.sun.proxy.$Proxy5.delegate(Unknown Source)
  25.         at nc.bs.framework.ejb.CMTEJBServiceHandler.invoke(CMTEJBServiceHandler.java:32)
  26.         at com.sun.proxy.$Proxy124.getCoverPlanList(Unknown Source)
  27.         at nc.impl.ca.cuma.account.ma.CoverPlanServlet.doGet(CoverPlanServlet.java:48)
  28.         at nc.impl.ca.cuma.account.ma.CoverPlanServlet.doPost(CoverPlanServlet.java:96)
复制代码
通过搜索,找到论坛里有个大神指出
  1. 因为UAP提供的服务是有访问控制的,必须在调用端以用户名+密码方式验证并获得访问令牌token后才可以访问uap后台服务。要解决这个问题,有两种方法。一种是在servlet中获取token,调用Nclocatoer.lookup(IFwLogin).login(...)输入用户名+密码获取token,并在URLConnection的请求参数中加入token(conn.setRequestProperty("security_token", KeyUtil.encodeToken(token)));另一个方法就是在要访问的服务的upm中配置该服务不受访问控件,即<component name="XChangeServlet" accessProtected="false" emote="false" singleton="false" tx="NONE">。
复制代码

我试了第二种方法,想先看到效果,但是不行
  1. <component priority="0" singleton="false" remote="false" tx="NONE" accessProtected="false">
  2.               <interface>nc.pubitf.ca.cuma.account.ma.IMACoverPlanService</interface>
  3.               <implementation>nc.impl.ca.cuma.account.ma.MACoverPlanServiceImpl</implementation>
  4.             </component>
复制代码

第一种说的太抽象了,能给个具体的例子吗?万分感谢!或者说出现这种错误还有什么办法解决吗?
发表于 2015-10-21 11:35:53 | 显示全部楼层
使用道具 举报

回复

发表于 2015-10-21 11:40:39 | 显示全部楼层
第一种你在论坛里面搜单元测试,里面有写好的代码告诉你怎么获取token
使用道具 举报

回复

发表于 2015-10-21 11:40:57 | 显示全部楼层
String username = "downuser";
        String password = "down123";
        IFwLogin loginService = (IFwLogin) NCLocator.getInstance().lookup(IFwLogin.class.getName());
        byte[] token = loginService.login(username, password, null);
        Logger.error("mytoken:::"+token);
        NetStreamContext.setToken(token);

第一种方法就是登陆获取token, 代码如上
使用道具 举报

回复

lanzhm3的头像 楼主
发表于 2015-10-21 13:09:27 | 显示全部楼层
感谢,已经解决
使用道具 举报

回复

发表于 2017-11-6 15:13:01 | 显示全部楼层
目前在做产品接口这一块 , 感谢@devin2014 的方法 .
NC确实有太多东西需要了解了. 继续学习.
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部