我的AS400应用程序(rpg400)中有一个登录模块。验证了用户名和密码,只有密码匹配,用户才能访问菜单屏幕,菜单屏幕还包含rpg程序,可以导航到后续模块。 / p>
我现在想要实现的是当用户被验证时,登录的用户名必须出现在每个屏幕上,或者更确切地说是每个被调用的rpg屏幕。(即必须维护用户会话)请不要指导管理员属性。是从低级别的工作。
以下是用户PF:
USER PF
A R USRREC
A USER 10A
A PWD 10A
A USRTYP 2A
A K USRTYP
键入用户类型。如何允许所有pgms都可以访问登录人员的变量?
答案 0 :(得分:7)
5250显示与HTML不同。没有可以用作标准模板的CSS。您需要专门设计每个显示器,使其看起来像您想要的那样。对于此特定问题,这意味着您将在要显示的每个显示面板上放置一个用户ID字段。
如果我正在设计这个,我可能会将用户ID作为参数传递给每个RPG程序,但是有很多方法可以传递信息。
将用户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连接)。
如果您非常强烈地认为必须拥有单独的密码,请考虑存储密码的安全单向散列。当他们稍后输入密码时,计算他们输入的内容的哈希值,并将其与存储的哈希值进行比较。
如果您要求用户在登录后输入密码,那么假设您正在尝试解决某些安全问题似乎是安全的,因此尝试帮助您这样做是合理的。安全的方式。这是一个开始。