应用程序之间共享密码

本文关键字:密码 共享 之间 应用程序 | 更新日期: 2023-09-27 18:28:04

我用C#编写了一个需要用户登录的应用程序。

该应用程序包含三个子应用程序,如果用户在一个应用程序n中标识了自己,则不必登录其他应用程序。

用户可以从主应用程序启动子应用程序,也可以单独启动。目前,我通过将主要应用程序的用户名和密码作为命令行参数来解决这个问题,但我认为必须有更好的方法在应用程序之间共享信息。

每个应用程序都是一个单独的程序集。任何人

应用程序之间共享密码

您可能希望在应用程序之间拥有某种类型的共享身份验证API,或者拥有独立于应用程序和所有应用程序的身份验证服务。您还没有写过如何实现登录过程,因此很难给出一些具体的建议

不确定这是否是您想要的,但我会将其保存到一个(加密的)文件中,该文件在启动时为每个应用程序进行检查

我是这方面的新手,但我认为有一个简单的答案——制作一个所有应用程序都使用的标志。不同之处在于,您传递的是一个标志,而不是login/username。如果登录成功,标志为true,其他应用程序可以在不登录的情况下启动。一旦用户注销,标志就会变为false。

我假设您只需要在每个子应用程序中进行一次身份验证,也就是说,每次用户在子应用程序内选择不同的功能时,您都不需要进行身份验证。

1. Main App Loaded
1a. Main App Authenticated
1b. Set db.userSessionExpiry = DateAdd(Now + 10 minutes) (for the user inquestion)
2a. User opens the sub app 
(you pass the username to subapp) or (sub app gets the winlogin user) or other
2b. Sub app checks for the session expiry for this user
2c. If the expiry time (from 1b) has gone past now, re-authenticate. 
2d. Set db.userSessionExpiry = DateAdd(Now + 10 minutes) (for the user inquestion)

这样你就不会到处传递密码,并将身份验证留给用户。

想象一下,如果你的用户启动了主应用程序并离开(他的屏幕未锁定),你就留下了一个开放的经过身份验证的令牌,供其他用户访问和处理子应用程序

您可以配置除10分钟以外的会话超时(例如20分钟作为默认的网络会话超时)

现在,如果您需要在函数级别对用户进行身份验证(而不是在启动时),那么每次执行函数时都需要调用上面的1b。

我希望这是有意义的,它有助于