我在C#中编写了一个需要用户登录的应用程序。
该应用程序包含三个子应用程序,如果用户在一个应用程序中识别出自己,则不应该登录其他应用程序。
用户可以从主应用程序或单独启动子应用程序。目前我通过从主应用程序传递命令行参数的用户名和密码来解决它,但我相信必须有更好的方法在应用程序之间共享信息。
每个应用程序都是单独的程序集。任何人吗?
答案 0 :(得分:2)
您可能希望在应用程序之间使用共享身份验证API,或者独立于应用程序和所有应用程序的身份验证服务。你还没有写过如何实现登录过程 - 所以很难给出一些具体的建议
答案 1 :(得分:0)
不确定这是否是您想要的,但我会将其保存到(加密)文件中,该文件由启动检查每个应用程序
答案 2 :(得分:0)
我对这些东西不熟悉,但我认为这有一个简单的答案 - 制作一个标志,供所有应用程序使用。不同之处在于您传递的是标志而不是登录/用户名。 如果登录成功,则flag为true,其他应用程序无需登录即可启动。一旦用户注销,Flag就会变为false。
答案 3 :(得分:0)
我假设您只需要在每个子应用程序中验证一次,即每次用户在子应用程序中选择不同的功能时都不进行身份验证。
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分钟以外的会话超时(例如默认的websession超时时间为20分钟)
现在,如果您需要在功能级别(在启动时)对用户进行身份验证,那么每次执行某个功能时都需要调用1b。
我希望这很有意义并且有所帮助