码迷,mamicode.com
首页 > Web开发 > 详细

ASP.Net MVC4 登录

时间:2016-04-08 21:43:56      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

一月之前,工作室师兄给我们介绍博客,然后试着去申请了一个,一直不晓得更新什么,直到今天,才有了一点小想法。最近在做一个小网站,然后就在登录那一块犯愁了,止步不前。

以前对登录一直没有什么概念,以为登录就是一道门槛,是网络世界已经设置好了的,就像一座城,登录了就像进了城一样。但是这两天才比较深刻的认识到,网络世界其实并没有那么神奇,所谓登录,就是拿一张票给你,然后你每次想进做点事的时候,就检查一下你的票,看你有没有资格。所以现在才完全对登录有了一个正确的印象。

那ASP.Net MVC 对这个做得很好,那就是每个方法都可以直接打一个标签就完事了。然后你再设定自己检查失败要导向的页面。

那么就来说一说那张票长的什么样子吧。

 

技术分享
1 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
2  1,   //版本
3  Context.User.Identity.Name,     //登陆时候存入的标识用户的用户名
4  DateTime.Now,                   // 发布时间
5  DateTime.Now.AddHours(1),       // 过期时间
6  false,                          // 是否持久
7  roleStr                         // 角色字符串
8  );
Ticket

 

没错,就是这样的。

然后程序是这样写的。

 

技术分享
 1 FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
 2                     1,
 3                     logined.First().Id.ToString(),
 4                     DateTime.Now,
 5                     DateTime.Now.AddMinutes(30),
 6                     false,
 7                     role
 8                    );
 9                 string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
10                 System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
11                 System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);
Login Code

 

这里还有一点值得注意的就是 User.Identity.Name,这个以前在其他的程序中看到过,然而并不知道是干什么的。这里看来就是UserName。所以就可以把邮箱直接放进去了,然后在程序中很轻松就可以拿到邮箱了。var email = User.Identity.Name;

然后还有一个角色roles,这里就可以放入角色,比如管理员或者普通人,那样在方法或者是控制器上打标签[Authorize(Roles = "Admin")]的时候就方便多了。

还说一点就是在程序中怎么获取roles

 

技术分享
1 var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
2             var ticket = FormsAuthentication.Decrypt(cookie.Value);
3             string role = ticket.UserData;
Get cookie code

 

 然后Roles还要单独设置,这个有点麻烦。详见http://www.cnblogs.com/dedeyi/p/3424979.html

这里仅作参考

 

技术分享
 1 public Global()
 2         {
 3             AuthorizeRequest += new EventHandler(MvcApplication_AuthorizeRequest);
 4         }
 5 
 6         void MvcApplication_AuthorizeRequest(object sender, EventArgs e)
 7         {
 8             var id = Context.User.Identity as FormsIdentity;
 9             if (id != null && id.IsAuthenticated)
10             {
11                 var roles = id.Ticket.UserData.Split(,);
12                 Context.User = new GenericPrincipal(id, roles);
13             }
14         }
Roles Code

 

还有记得在web.config中的system节点下添加

 

技术分享
1 <authentication mode="Forms">
2       <forms loginUrl="~/Login/Index" timeout="2880" />
3     </authentication>
View Code

 

就写到这里,洗澡去了。

ASP.Net MVC4 登录

标签:

原文地址:http://www.cnblogs.com/dudeping/p/5369934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!