ASP.NET Form验证随笔

以前的项目遇到用户验证问题全都采用windows验证方式,最近公司项目中要求采用Forms验证方式。

总结如下:

1.登录页面代码

 protected void Button1_Click(object sender, EventArgs e)
        {

                FormsAuthenticationTicket ticket=new FormsAuthenticationTicket   (1,"LoginName",DateTime.Now,DateTime.Now.AddMinutes(20),false,"aaa",FormsAuthentication.FormsCookiePath);
                HttpCookie cookie=new HttpCookie(FormsAuthentication.FormsCookieName,FormsAuthentication.Encrypt(ticket));
                if(ticket.IsPersistent)
                {
                    cookie.Expires = ticket.Expiration;
                }
                Response.Cookies.Add(cookie);


                Response.Redirect("admin_page1.aspx");
        }

 

2. Webconfig代码

<authentication mode="Forms" >
        <forms name="authTest" loginUrl="~/admin/admin_login.aspx" timeout="20">
        </forms>
      </authentication>
    </system.web>
  <location path="admin">
    <system.web>
      <authorization>
        <allow roles="admin,aaa"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

 

3.Global文件代码

添加Application_AuthenticateRequest事件

 if (HttpContext.Current.User != null)
            {
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                {
                    if (HttpContext.Current.User.Identity is FormsIdentity)
                    {
                        string userData;
                        string[] roles;

                        userData = string.Empty;
                        try
                        {
                            if (Request.Cookies["authTest"] != null)
                            {
                                FormsAuthenticationTicket ticket =
                                    FormsAuthentication.Decrypt(Request.Cookies["authTest"].Value);
                                if (ticket != null)
                                {
                                    userData = ticket.UserData;
                                }
                            }
                        }
                        catch (Exception E)
                        {
                            HttpContext.Current.Response.Write("<!-- " + E.Message + " -->");
                        }
                        roles = userData.Split(',');
                        HttpContext.Current.User = new GenericPrincipal(HttpContext.Current.User.Identity, roles);
                    }
                }
            }

 

到此完成了Forms验证。

但我有疑问:如果客户端禁用了cookie那么forms验证是否就失效了呢?

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值