繁体   English   中英

在应用程序间共享密码

[英]Sharing password between applications

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

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

用户可以从主应用程序或单独启动子应用程序。 目前我通过从主应用程序传递用户名和密码来解决它的命令行参数,但我相信必须有更好的方法来共享应用程序之间的信息。

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

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

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

我是这个人的新手,但我认为这有一个简单的答案 - 制作一个标志,供所有应用程序使用。 不同之处在于您传递的是标志而不是登录/用户名。 如果登录成功,则flag为true,其他应用程序无需登录即可启动。一旦用户注销,Flag就会变为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分钟作为默认的websession超时)

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

我希望这是有道理的,它会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM