我这里有点麻烦。我正在开发一个使用 Web 服务进行身份验证和 WinForms 前端的多层 CAB 应用程序。
现在,我被要求实施密码到期并获得了必要的详细信息,并且我已经使用它们来查看用户的密码是否已过期,唯一的问题是,我在暂停登录过程和“重定向”到ChangePassword 表单。
我一直在尝试的是抛出一个名为 PasswordExpiredException(inherits System.Exception 和后来的 ApplicationExcetion 当它不起作用时) 的自定义异常并在 catch 中调用 ChangePassword.ShowDialog() 。这引起了头疼,因为它正在做我该死的告诉它做的事情,并且如果密码已过期,则会在登录时抛出一个不合时宜的异常。
那么,当它完成它的工作时,我可以取消抛出我的异常吗?或者,我应该放弃这个想法并“正确”地去做吗?不知道那可能是什么
登录时调用堆栈的基本运行~~>
Logon.Cs.btnOK_Click ~~> wsAuthentication.GetProvider(GetUserDBInstace(UserName))~~>
ASPNETAuthentication.Authenticate(username,password)~~>
CheckIfExipred(MembershipUser.LastPasswordChangedDate)
~Y~> throw PasswordExpiredException; //getting it to go back all the way to the UI, opening up ChangePassword.cs, leaving me with an authenticated user who's about to change his old password
~N~> //continue login, ignoring all my hard work