0
我們有一個遺留系統,我們正在公開一個新的Web界面。它有自己的認證/登錄管理系統,所以我認爲我們想繞過MVC4的許多功能。我們只需要驗證用戶和密碼是否代表有效登錄,然後找到一些確保未來請求不會被其他用戶/客戶僞造的方法。我們能做到這一點簡單地用:在控制器驗證登錄後使用FormsAuthentication.SetAuthCookie是否安全,然後僅依賴於AuthorizeAttribute?
代碼,支持登錄:
Public Class HomeController
Inherits System.Web.Mvc.Controller
Protected Overrides Sub OnAuthorization(filterContext As AuthorizationContext)
MyBase.OnAuthorization(filterContext)
If Not User.Identity.IsAuthenticated Then
' Ensure that provided login parameters are valid
FormsAuthentication.SetAuthCookie(<Insert user name here>, False)
End If
End Sub
Function Index(ByVal returnUrl As String) As ActionResult
ViewData("ReturnUrl") = returnUrl
Return View()
End Function
End Class
然後,我可以簡單地將AuthorizeAttribute
任何控制器功能,以確保它只能由授權用戶調用?例如:
' GET api/fsitem
<Authorize()> _
Public Function GetValues(<FromUri()> filter As IEnumerable(Of GridFilter)) As IEnumerable(Of FS_Item)
這是足夠安全的,假設我告訴應用程序什麼的User.Identity.Name
值,或者已經在這裏我繞過安全的一些重要的水平?