Попытка прочитать билеты FormsAuthentication для чтения в других областях сайта - PullRequest
1 голос
/ 01 июня 2010

ПРИМЕЧАНИЕ. Я включил здесь 3 ссылки на локальные области, но не смог отправить сообщение, поэтому я разделил их пробелом, чтобы они отправлялись в stackoverflow.

В настоящее время у меня есть 2 приложения ASP.NET MVC в моем решении. Сначала я запускаю первый, установив его в качестве запуска проекта. Он переходит на страницу входа, оттуда после ввода данных я выполняю следующий код:

var authTicket = new FormsAuthenticationTicket(1, login.LoginDataContract.MSISDN, DateTime.Now,
                                                           DateTime.Now.AddMinutes(Convert.ToDouble("30")), true, "");

            string cookieContents = FormsAuthentication.Encrypt(authTicket);

            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents)
                             {
                                 Expires = authTicket.Expiration,
                                 //Path = FormsAuthentication.FormsCookiePath
                                 //Path = "http://localhost"
                                 Domain = ""
                             };

            if (System.Web.HttpContext.Current != null)
            {
                System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
            }

Как вы можете видеть, я установил Domain = "", поэтому, теоретически, он должен работать на любой вещи под моим http: // localhost. Затем я установил для постоянной безопасности cookie значение true, чтобы я мог получить к нему доступ из любого места под локальным хостом.

Печенье пишет хорошо, и я вошел в систему и все Godd на данный момент. Кстати, URL для этой страницы входа: http // localhost / MyAccount / Login

Теперь я прекращаю решение и устанавливаю другие приложения MVC для запуска. Тогда я запускаю это. URL для второго сайта: http: // localhost / WebActivations / Вот код в контроллере запуска других приложений:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        // PASHA: Added code to read the authorization cookie set at
        // login in MyAccount *.sln

        for (int i = 0; i < System.Web.HttpContext.Current.Request.Cookies.Count;i++)
        {
            Response.Write(System.Web.HttpContext.Current.Request.Cookies[i].Name + " " + System.Web.HttpContext.Current.Request.Cookies[i].Value);
        }

        HttpCookie authorizationCookie = System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName.ToString()];

        // decrypt.
        FormsAuthenticationTicket authorizationForm = FormsAuthentication.Decrypt(authorizationCookie.Value);

        ViewData["Message"] = authorizationForm.UserData[0].ToString();

        return View();
    }

    public ActionResult About()
    {
        return View();
    }

Проблема в этом контроллере Home, когда я запускаю решение, которое не может прочитать куки-файл аутентификации, вы видите цикл, в котором он не находит куки-файл .ASPXAUTH.

Но как только он падает в Firefox, я заглядываю в «Информация о странице», а затем в «Безопасность» и «Куки» и там, и тот же cookie.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 02 июня 2010

Мои ошибки в обоих web.configs обоих сайтах. Я забыл добавить элемент mahineKey.

0 голосов
/ 01 июня 2010

Попробуйте установить Domain="localhost"

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