从视图模型中验证用户?

时间:2016-04-07 07:34:48

标签: .net asp.net-mvc entity-framework

我已经使用自定义表单身份验证设置了一个简单的ASP MVC项目。我也在使用Entity Framework,所以我目前有一个名为Account的EF域名模型和一个名为AccountViewModel的视图模型。在对用户进行身份验证时,我之前在我的帐户/身份验证操作中执行此操作,该操作将从登录表单的帐户/登录位置发布。

但是,我知道在控制器中使用业务逻辑并不是一个好主意,因此我觉得我应该将其转移到模型中。可以将这种逻辑移到我的视图模型中吗?以下是我的观点模型:

Public Class AccountViewModel

    Public Property Email As String
    Public Property Password As String

    Public Function Authenticate() As Boolean
        Using context As New DbContext
            Dim emailMatch = (From acc In context.Accounts
                              Where acc.Email = Me.Email).FirstOrDefault
            If Not emailMatch Is Nothing Then
                If emailMatch.FailedLogins < 5 Then
                    If Me.Password = emailMatch.Password Then
                        emailMatch.FailedLogins = 0
                        context.SaveChanges()
                        Return True
                    Else
                        emailMatch.FailedLogins += 1
                        context.SaveChanges()
                    End If
                End If
            End If
        End Using
        Return False
    End Function

End Class

然后我处理在我的控制器中设置身份验证cookie,以响应此函数的返回。

'POST: /Account/Auth
Function Auth(account As AccountViewModel) As ActionResult
    If account.Authenticate Then FormsAuthentication.SetAuthCookie(account.Email, False)
    Return RedirectToAction("Index")
End Function

0 个答案:

没有答案