Как установить свойства аутентификации asp.net - PullRequest
2 голосов
/ 15 июня 2009

У меня есть следующие настройки в моем файле web.config. Это в основном ограничивает доступ к странице, если пользователь не вошел в систему. Если я не хочу использовать элементы управления входом asp или реализовывать поставщика членства, как я могу «сказать» asp, что страница loginregister.aspx санкционировала запрос если я хочу реализовать свою собственную систему входа в систему?

Спасибо.

<authentication mode="Forms">
            <forms loginUrl="~/loginregister.aspx"
                   name=".ASPXFORMSAUTH" />
        </authentication>

        <authorization>
            <deny users="?" />
        </authorization>

<location path="~/secretpage.aspx" allowOverride="true">
        <system.web>
            <compilation debug="true" />
            <authorization>
                <deny users="?" />
            </authorization>
        </system.web>
    </location>

Ответы [ 3 ]

5 голосов
/ 01 марта 2010

После того, как вы подтвердите свой пользователь, установите билет ....

    Response.Cookies.Add(TicketHelper.CreateAuthCookie(Login1.UserName, userData, Login1.RememberMeSet /*persistent cookie*/));

используя этот вспомогательный класс ...

Если используется элемент управления входом в систему, выполните это в обработчике событий Authenticated.

using System;
using System.Web;
using System.Web.Security;

namespace CustomAuthRepurposingFormsAuth
{
    public static class TicketHelper
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userData">be mindful of the cookie size or you will be chasing ghosts</param>
        /// <param name="persistent"></param>
        /// <returns></returns>
        public static HttpCookie CreateAuthCookie(string userName, string userData, bool persistent)
        {
            DateTime issued = DateTime.Now;
            // formsAuth does not expose timeout!? have to hack around the
            // spoiled parts and keep moving..
            HttpCookie fooCookie = FormsAuthentication.GetAuthCookie("foo", true);
            int formsTimeout = Convert.ToInt32((fooCookie.Expires - DateTime.Now).TotalMinutes);

            DateTime expiration = DateTime.Now.AddMinutes(formsTimeout);
            string cookiePath = FormsAuthentication.FormsCookiePath;

            var ticket = new FormsAuthenticationTicket(0, userName, issued, expiration, true, userData, cookiePath);
            return CreateAuthCookie(ticket, expiration, persistent);
        }

        public static HttpCookie CreateAuthCookie(FormsAuthenticationTicket ticket, DateTime expiration, bool persistent)
        {
            string creamyFilling = FormsAuthentication.Encrypt(ticket);
            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, creamyFilling)
                             {
                                 Domain = FormsAuthentication.CookieDomain,
                                 Path = FormsAuthentication.FormsCookiePath
                             };
            if (persistent)
            {
                cookie.Expires = expiration;
            }

            return cookie;
        }
    }
1 голос
/ 12 декабря 2011
    // formsAuth does not expose timeout!? have to hack around the
    // spoiled parts and keep moving..
    HttpCookie fooCookie = FormsAuthentication.GetAuthCookie("foo", true);
    int formsTimeout = Convert.ToInt32((fooCookie.Expires - DateTime.Now).TotalMinutes);

Аутентификация с помощью форм выставляет тайм-аут с .Net 4.0 FormsAuthentication.Timeout.TotalMinutes

0 голосов
/ 15 июня 2009

Если вы не хотите делать НИЧЕГО с системой .NET, это будет немного сложно.

Если с вами все в порядке, просто используйте «FormsAuthentication.RedirectFromLoginPage» при входе в систему, чтобы установить cookie, который показывает пользователя, вошедшего в систему.

...