4

我试图FormsAuthentication在 ASP.NET MVC 4 应用程序中创建自己的应用程序,我已经看到了两种不同的方法来创建我的 authcookie,我想知道其中一种方法是否有任何缺点,或者两者都使用是否安全,是否有在我决定使用女巫之前,我应该了解的其他差异?

第一个是

FormsAuthentication.SetAuthCookie(userName, rememberMe);

另一个有点长

            var authTicket = new FormsAuthenticationTicket(
            1,
            userName,
            DateTime.Now,
            DateTime.Now.AddMinutes(30),
            rememberMe,
            "Users"
            );
        var encryptedTicket = FormsAuthentication.Encrypt(authTicket);

        var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
        HttpContext.Current.Response.Cookies.Add(authCookie);

请告诉我这个决定

4

2 回答 2

3

实际上,第一种方法调用了第二种方法。我已经使用了源代码SetAuthCookie来展示这一点,但删除了一些行以保持相关性:

public static void SetAuthCookie(string userName, bool createPersistentCookie)
{
    FormsAuthentication.Initialize();
    FormsAuthentication.SetAuthCookie(userName, createPersistentCookie, FormsAuthentication.FormsCookiePath);
}

public static void SetAuthCookie(string userName, bool createPersistentCookie, string strCookiePath)
{
    (...)
    HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie, flag ? "/" : strCookiePath, !flag);
    (...)
    HttpContext.Current.Response.Cookies.Add(authCookie);
    (...)
}

private static HttpCookie GetAuthCookie(string userName, bool createPersistentCookie, string strCookiePath, bool hexEncodedTicket)
{
    (...)
    DateTime utcNow = DateTime.UtcNow;
    DateTime expirationUtc = utcNow.AddMinutes((double) FormsAuthentication._Timeout);
    FormsAuthenticationTicket ticket = FormsAuthenticationTicket.FromUtc(2, userName, utcNow, expirationUtc, createPersistentCookie, string.Empty, strCookiePath);
    string str = FormsAuthentication.Encrypt(ticket, hexEncodedTicket);
    (...)
    HttpCookie httpCookie = new HttpCookie(FormsAuthentication.FormsCookieName, str);
    (...)
    return httpCookie;
}
于 2012-04-05T06:55:38.940 回答
1

第二个是最好的..因为你可以发送用户数据,设置过期时间等。

我也只使用这个......它运作良好..

于 2012-04-05T06:39:39.530 回答