.net mvc 如何使用webconfig里的forms验证

使用.net自带的forms验证是否有登录,没有登录则跳回loginUrl

在 webconfig 中的 <system.web> 里加入

<authentication mode="Forms">  
    <forms  loginUrl="/sys/login" />  
</authentication>  

在用的控制器中加入[Authorize]特性

全部控制器:在App_Start 下FilterConfig.cs 里注册过滤器

filters.Add(new AuthorizeAttribute());

判断是否用户登录看是否有票据(FormsAuthenticationTicket)生成
下面是登录,登出,获取登录用户代码

//获取FormsAuthentication 票据,保存cookie
public static void Login(LoginUser loginUser,int expireHour=10)
{
    DateTime expiration = DateTime.Now;
    if (expireHour > 0)
        expiration = expiration.AddHours(expireHour);
    var data = Newtonsoft.Json.JsonConvert.SerializeObject(loginUser);
    var ticket = new FormsAuthenticationTicket(1, loginUser.UserName, DateTime.Now,expiration, true, data);
    var cookie = new HttpCookie(FormsAuthentication.FormsCookieName,FormsAuthentication.Encrypt(ticket));
    cookie.HttpOnly = true;
    cookie.Expires = expiration;
    var context = HttpContext.Current;
    context.Response.Cookies.Remove(cookie.Name);
    context.Response.Cookies.Add(cookie);
}
//退出登录
public static void LogOut()
{
    var context = HttpContext.Current;
    var cookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
    if (cookie != null)
        context.Request.Cookies.Remove(FormsAuthentication.FormsCookieName);
    FormsAuthentication.SignOut();
}
//获取用户
public static LoginUser GetLoginUser()
{
    var context = HttpContext.Current;
    var cookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
    if (cookie == null)
        return null;
    var ticket = FormsAuthentication.Decrypt(cookie.Value);
    if (ticket == null)
        return null;
    var loginUser= Newtonsoft.Json.JsonConvert.DeserializeObject<LoginUser>(ticket.UserData);
    return loginUser;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值