FormsAuthentication的用户、角色身份认证

在Web.config里面system.web节点下加入以下代码 设置Cookie名称 以及过期的时间

 <authentication mode="Forms">
      <forms name="Project.AUTH" protection="All" timeout="43200" path="/" requireSSL="false" slidingExpiration="true" />
 </authentication>
    public class AuthenticationDAL
    {
        public AuthenticationDAL()
        {
        }
        /// <summary>
        ///TODO  获取当前客户UserId-AuthenticationDAL
        /// </summary>
        /// <returns></returns>
        public virtual int GetCurrentUserId()
        {
            if (HttpContext.Current == null ||
                HttpContext.Current.Request == null ||
                !HttpContext.Current.Request.IsAuthenticated ||
                !(HttpContext.Current.User.Identity is FormsIdentity))
            {
                return 0;
            }
            var formsIdentity = (FormsIdentity)HttpContext.Current.User.Identity;
            var userId = GetAuthenticatedCustomerFromTicket(formsIdentity.Ticket);
            return userId;
        }
        /// <summary>
        /// 通过ticket中的userId 给出客户的信息
        /// </summary>
        /// <param name="ticket"></param>
        /// <returns></returns>
        public virtual int GetAuthenticatedCustomerFromTicket(FormsAuthenticationTicket ticket)
        {
            if (ticket == null)
                throw new ArgumentNullException("ticket");
            var userData = ticket.UserData;
            var userId = 0;
            int.TryParse(userData, out userId);
            if (userId <= 0)
                return 0;
            return userId;
        }
        /// <summary>
        /// TODO 设置登录-AuthenticationDAL
        /// </summary>
        /// <param name="user"></param>
        /// <param name="createPersistentCookie">持久链接</param>
        public virtual void SignIn(UserInfo user, bool createPersistentCookie)
        {
            var now = DateTime.Now.ToLocalTime();
            var ticket = new FormsAuthenticationTicket(
                1 /*version*/,
                user.Id.ToString(),
                now,
                now.Add(FormsAuthentication.Timeout),
                createPersistentCookie,
                user.Id.ToString(),
                FormsAuthentication.FormsCookiePath);

            var encryptedTicket = FormsAuthentication.Encrypt(ticket);

            var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

            cookie.HttpOnly = true;

            if (ticket.IsPersistent)
            {
                cookie.Expires = ticket.Expiration;
            }
            cookie.Secure = FormsAuthentication.RequireSSL;
            cookie.Path = FormsAuthentication.FormsCookiePath;
            if (FormsAuthentication.CookieDomain != null)
                cookie.Domain = FormsAuthentication.CookieDomain;
            HttpContext.Current.Response.Cookies.Add(cookie);
        }
        public virtual void SignOut()
        {
            //TODO : 登出操作
            FormsAuthentication.SignOut();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值