我正在启动一个新应用程序并尝试使用 asp.net MVC 4。网络基础设施的设置方式意味着 MVC 应用程序无法直接访问数据库。相反,我将访问 WCF Web 服务来获取我的所有数据。这意味着我的用户名/用户详细信息列表是通过 WCF Web 服务访问的。我将使用 RSync 将数据推送到我的站点,因此我想使用内置的身份验证内容,因为 RSync 具有检查会话是否经过身份验证的命令:
if (Context.User.Identity.IsAuthenticated)
所以我的主要问题是如何使用网络服务器而不是数据库设置身份验证信息?我注意到模板使用:
WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)
但这是因为它使用以下代码链接到数据库:
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
所以我不认为我可以使用这种方法,除非我可以覆盖 WebSecurity.login 方法?所有其他网络安全方法?
我不认为这是正确的方法。相反,我认为我需要编写自己的安全类并让 Users 模型具有一个名为 Login(username, password) 的静态方法,该方法返回一个用户对象。但是后来我想以某种方式将 mvc(http 会话)用户设置为登录。这样当我使用 Authorize 属性时它就会起作用。如何将 http 会话用户设置为经过身份验证?