赛捷软件论坛's Archiver

lynn.yu 发表于 2018-8-30 14:46

[V11功能解说] 如何强制验证身份以便检查当前会话的用户凭据?

你或许会有某项业务需求,需要在采取某些举动之前检查当前会话的用户凭据。

这项需求存在于特定行业(例如制药行业的CFR 21-11),以便在某些情况下强制验证身份(从而确保一些修改操作的安全)。

自V11版本起,开发了一个API,给你提供了选项可以实现这点。下面是一个运用ASYRFNC.ACHECKCONNECT的示例。

在我们开始看示例之前,你可以通过在在线搜索网站搜索“管理用户身份验证”来了解更多关于这个API的信息。

[attach]4640[/attach]

所以,想象一下你有一个需求,每次在客户功能中发生付款条件变更的时候,用户必须录入他们的Syracuse密码,重新验证自己的身份。下面,我将向你演示如何做到这点:
1.        打开功能:[b]开发→脚本字典→屏幕→屏幕[/b]。
2.        选择屏幕[b]BPC3[/b]。
3.        点击[字段]页签,找到[b]“PTE(付款条件)”[/b]字段,并添加一项定制控制操作。

[attach]4641[/attach]

4.        [b]“保存”[/b]并[b]“审核”[/b]。
5.        打开功能:[b]开发→脚本字典→脚本→脚本编辑器[/b]。
6.        在[文件名称]字段中录入[b]SPEBPC[/b],并添加以下代码。

[attach]4642[/attach]

Subprog C_PTE(VALEUR)
Variable Char VALEUR()
Local Integer OK,ASTATUS
Local Char PASS
local Char MSG(200)
#Prompt user for Password
#This is a reusable program for prompting for a field
Call SAICAR(PASS,"Enter the signature password","Password","A",0,20,"",OK) From GESECRAN
If OK = 2
# this is the call to ASYRFNC.ACHECKCONNECT that checks to find out if the password entered is correct or not
ASTATUS=func ASYRFNC.ACHECKCONNECT(GACTX, PASS,MSG)
If ASTATUS>=[V]CST_AERROR
infbox("You are not allowed to make this change, Your password did not match")
# reverting payment term to the old value
VALEUR =[M:BPC3]PTE
AFFZO [M:BPC3]PTE
Endif
Endif
End

7.        [b]“保存”[/b],接着[b]“编译”[/b]。
8.        现在,打开功能:[b]基础数据→商业伙伴→客户[/b]。
9.        选择一个现有客户。
10.        点击[b][财务][/b]页签。
11.        在[付款条件]字段中选择一个新的条件。
12.        在按Tab键一路向后移动过程中,你会看到弹出一个如下窗体,让用户重新录入自己的Syracuse密码。

[attach]4643[/attach]

13.        如果密码正确,那么就会通过新的付款条件,光标会移至下一个字段,但如果录入的密码不正确,则用户会看到以下报错,且付款条件会变为原来的付款条件。

[attach]4644[/attach]

[b]结论:[/b]在发生某些操作行为时,你可以运用ASYRFNC.ACHECKCONNECT来重新验证用户密码。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.