ASP.Net MVC Cookies в консольном приложении - PullRequest
0 голосов
/ 20 апреля 2011

Я пытаюсь создать конечную точку ASP.Net MVC для внешней аутентификации.Идея заключается в том, чтобы я мог вызывать конечную точку из консольного приложения, приложения WPF или чего-либо еще и использовать шаблон MVC для своей службы, возвращая JSON аутентифицированным пользователям, проверяя аутентификацию через атрибут и т. Д. Я использую консольное приложение длятеперь просто потому, что это быстро и просто.

Пока у меня есть это:

В моем консольном приложении:

Public Sub MakeLoginRequest()
        Dim address As Uri = New Uri("http://localhost:50536/Account/LogIn")
        Dim request As HttpWebRequest = HttpWebRequest.Create(address)
        request.Method = "POST"
        request.ContentType = "application/json; charset=utf-8"

        Dim loginModel As New LogOnModel With {.UserName = "Richard",
                                               .Password = "Password1",
                                               .RememberMe = False}

        Dim jsonData As String = JsonConvert.SerializeObject(loginModel)
        Dim bytes As Byte() = System.Text.Encoding.ASCII.GetBytes(jsonData)
        request.GetRequestStream.Write(bytes, 0, bytes.Count)

        Dim response As HttpWebResponse = request.GetResponse()
End Sub

В моем контроллере:

<HttpPost()>
Public Function LogIn(model As LogOnModel) As ActionResult
    If ModelState.IsValid Then
        If Membership.ValidateUser(model.UserName, model.Password) Then
            Dim cookie As HttpCookie = FormsAuthentication.GetAuthCookie(model.UserName, False)
            cookie.Expires = DateTime.Now.AddMinutes(20)
            Request.Cookies.Add(cookie)
            Request.Cookies.Add(New HttpCookie("Barney", "Rubble"))

            Return Content("Logged In Ok")
        Else
            Return New HttpUnauthorizedResult
        End If
    Else
        Return New HttpUnauthorizedResult
    End If
End Function

Теперь, когда я проверяю ответ в консольном приложении, куки-файлов никогда не бывает - ни настоящие Auth-cookie, ни мои поддельные cookie-файлы Barney Rubble на самом деле не появляются!

Однако ... Я делаю тот же звонокв Chrome и проверьте ответ ... и оба куки есть!

Кто-нибудь есть идеи относительно того, что идет не так?

1 Ответ

2 голосов
/ 20 апреля 2011

Вам необходимо установить CookieContainer по вашему запросу, как описано здесь:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...