ofbiz的服务授权步骤- -
授权步骤:
1.在服务的xml文件里,<service>标签里有一个授权属性,将该属性设置为"true"意味着该服务需要授权.
2.如果为真,那么ModelService对象(拥有该服务的所有信息)拥有auth变量就会设置为"true".
3.当ServiceDispatcher对象的runSync方法被调用,它会检查是否需要授权,是否有一个userLogin对象(line 256,ServiceDispatcher.java),它所作的这些是通过调用它自己的checkAuth()方法,该方法从参数上下文得到 userLogin对象或者使用参数"login.username"和"login.password"调用getLoginObject().
4.注意到userLogin是从ServiceDispatcher.checkAuth方法返回的一个对象.
5.所以,对于拥有anth="true"设置的服务,传递userLogin对象或者"login.username"和"login.password"字符串.
6.userLogin是session对象(userLogin=session.getAttribute("userLogin"));
7.当初始化调用服务不需要授权但子SECA服务需要时,则会发生什么?例如,在accounting应用中,有一个 createInvoiceFromShipment不需要授权.当它被提交之后,secas.xml触发 capturePaymentByInvoice运行,而它需要授权.那么它应该传递userLogin对象给初始化服务,然后传到下一个SECA服务吗? David Jones的答案:如果服务ECA需要参数,它必须在初始化时传递,或者从初始化服务或者前一个ECA返回,并且将它加到调用上下文.
授权步骤:
1.在服务的xml文件里,<service>标签里有一个授权属性,将该属性设置为"true"意味着该服务需要授权.
2.如果为真,那么ModelService对象(拥有该服务的所有信息)拥有auth变量就会设置为"true".
3.当ServiceDispatcher对象的runSync方法被调用,它会检查是否需要授权,是否有一个userLogin对象(line 256,ServiceDispatcher.java),它所作的这些是通过调用它自己的checkAuth()方法,该方法从参数上下文得到 userLogin对象或者使用参数"login.username"和"login.password"调用getLoginObject().
4.注意到userLogin是从ServiceDispatcher.checkAuth方法返回的一个对象.
5.所以,对于拥有anth="true"设置的服务,传递userLogin对象或者"login.username"和"login.password"字符串.
6.userLogin是session对象(userLogin=session.getAttribute("userLogin"));
7.当初始化调用服务不需要授权但子SECA服务需要时,则会发生什么?例如,在accounting应用中,有一个 createInvoiceFromShipment不需要授权.当它被提交之后,secas.xml触发 capturePaymentByInvoice运行,而它需要授权.那么它应该传递userLogin对象给初始化服务,然后传到下一个SECA服务吗? David Jones的答案:如果服务ECA需要参数,它必须在初始化时传递,或者从初始化服务或者前一个ECA返回,并且将它加到调用上下文.