验证rpgs的用户,密码和打开菜单

时间:2012-08-09 17:36:30

标签: db2 ibm-midrange rpgle rpg

我的AS400应用程序(rpg400)中有一个登录模块。验证了用户名和密码,只有密码匹配,用户才能访问菜单屏幕,菜单屏幕还包含rpg程序,可以导航到后续模块。 / p>

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

以下是用户PF:

       USER PF


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

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

3 个答案:

答案 0 :(得分:7)

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

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

  • QTEMP中的数据区域
  • QTEMP中的数据库文件
  • LDA
  • QTEMP中的用户空间
  • 环境变量(* JOB)

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

如果系统可以使用内置的IBM安全性,则可以避免所有这些。然后,您可以使用作为作业名称一部分的用户配置文件 - 请参阅Program Status Data Structure,位置254-263以在RPG程序中获取该用户配置文件。如果您可以使用IBM用户配置文件,则不必传递任何内容;每个程序都能够自己检索这些信息;我将它放入服务程序中,因此很容易重用。

答案 1 :(得分:1)

听起来像local data area或在QTEMP中创建的常规数据区域的理想用途。

答案 2 :(得分:1)

如果您使用的是与登录系统时相同的用户ID,则可以在显示文件中使用USER关键字。

您真的需要将用户ID和密码存储在一个文件中,该文件本身就比操作系统的安全性低吗?这会打开一组您可能不需要触及的问题。

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

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

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