2013-12-11 25 views
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值,或者已經在這裏我繞過安全的一些重要的水平?

回答

0

是的,這基本上是使用表單身份驗證cookie管理沒有Membership會員存儲。這是ASP.NET支持的方案。這裏有一篇文章解釋了這兩個概念之間的區別。

Membership is not Forms Auth

初始認證之後,授權屬性將強制呼叫者的身份。這不僅是足夠的,這是表單身份驗證的關鍵安全功能。

相關問題