0

我的 AS400(rpg400) 应用程序中有一个登录模块。这里验证了用户名和密码,并且只有当密码匹配时,用户才能访问菜单屏幕,该屏幕进一步包含 rpg 程序以导航到后续模块。

我现在想要实现的是当用户被验证时,登录的用户名必须出现在每个屏幕上,或者更确切地说是每个被调用的 rpg 屏幕上。(即必须维护用户会话)请不要指导管理属性。这是来自低水平的工作点。

以下是关于用户的 PF:

       USER PF


A          R USRREC                
A            USER          10A     
A            PWD           10A     
A            USRTYP         2A     
A          K USRTYP                

键入用户类型。如何允许所有 pgms 访问已登录人员的变量?

4

3 回答 3

7

5250 显示器与 HTML 不同。没有可用作标准模板的 CSS。您将需要专门设计每个显示器,使其看起来像您想要的那样。对于这个特定的问题,这意味着您将在每个要查看的显示面板上放置一个用户 ID 字段。

如果我正在设计这个,我可能会将用户 ID 作为参数传递给每个 RPG 程序,但是有很多方法可以传递信息。

  • QTEMP 中的数据区
  • QTEMP 中的数据库文件
  • 低密度脂蛋白
  • QTEMP 中的用户空间
  • 环境变量 (*JOB)

将用户 ID 作为参数传递的优点是永远不会有需要清理的陈旧对象。如果一个人有两个用户 ID——比如她在会计和应付账款部门工作——并且需要注销并重新登录到这个内部安全系统,那么后续的 CALL 只需传递正确的参数。

如果系统可以使用内置的 IBM 安全性,所有这些都可以避免。然后,您可以使用作为作业名称一部分的用户配置文件 - 请参阅程序状态数据结构,位置 254-263 以在 RPG 程序中获取它。如果您可以使用 IBM 用户配置文件,您就不必传递任何东西;每个程序都能够自行检索该信息;我会将其放入服务程序中,以便于重用。

于 2012-08-09T18:49:00.697 回答
1

如果您使用的用户 ID 与他们用于登录系统的用户 ID 相同,那么您可以USER在显示文件中使用关键字。

您真的需要将用户 ID 和密码存储在本质上不如操作系统安全的文件中吗?这会打开一系列您可能不需要接触的问题。

您可以调用可以使用该CHKPWD命令输入系统密码的 CL 程序或过程。监视错误,并在出现问题时将其注销。他们的密码是安全的(假设您使用的是 SSL 连接)。

如果您非常强烈地认为您必须有一个单独的密码,请考虑存储密码的安全单向哈希。当他们稍后输入密码时,计算他们输入的哈希值并将其与存储的哈希值进行比较。

如果您要求用户在他们已经登录后输入密码,那么假设您正在尝试解决一些安全问题似乎是安全的,因此尝试以安全的方式帮助您这样做似乎是合理的。这是一个开始。

于 2012-08-10T01:28:28.710 回答
1

听起来像是本地数据区或在 QTEMP 中创建的常规数据区的理想用途。

于 2012-08-09T20:06:24.540 回答