我在我的 .NET MVC4 项目中使用 SimpleMembership。在开发过程中,在手动操作/重建数据库时,我遇到了一个在生产中不太可能出现的错误,但我想解决这个问题,但我找不到一种优雅的方式来处理它。
如果在登录应用程序后,您的用户名在数据库中被更改,或者您的用户记录被完全删除,用户将无法再访问应用程序的任何页面......包括允许匿名查看的公共页面,以及登录屏幕。相反,会引发异常 - “未找到名为“用户名”的用户”。
我的应用程序中的所有页面都显示一个部分视图,该视图呈现登录/注销控件。无论数据库中有什么,Request.IsAuthenticated 都会返回 true。应用程序似乎根据 cookie 中的信息认为用户仍在登录,但在数据库中找不到相应的记录。清除 auth cookie 可以解决这个问题,但这不是我想向可能遇到这种情况的用户提供的说明。
我当前的解决方案是在 Global.asax 中捕获该异常,清除 cookie,然后重定向到登录页面。这对我来说似乎完全是hacky。
有没有人对这种情况有更好的解决方案?我从未在使用旧的 .NET Membership 提供程序时遇到过这样的问题……我的期望是,这种情况应该开箱即用,我不应该考虑它……如果记录被更改/deleted 在数据库中,用户应该只是授权失败并自动重定向到登录页面。