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

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

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

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

 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
  ,   //版本
  Context.User.Identity.Name,     //登陆时候存入的标识用户的用户名
  DateTime.Now,                   // 发布时间
  DateTime.Now.AddHours(),       // 过期时间
  false,                          // 是否持久
  roleStr                         // 角色字符串
  );

Ticket

没错,就是这样的。

然后程序是这样写的。

 FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                     ,
                     logined.First().Id.ToString(),
                     DateTime.Now,
                     DateTime.Now.AddMinutes(),
                     false,
                     role
                    );
                 string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
                 System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
                 System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);

Login Code

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

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

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

 var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
             var ticket = FormsAuthentication.Decrypt(cookie.Value);
             string role = ticket.UserData;

Get cookie code

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

这里仅作参考

 public Global()
         {
             AuthorizeRequest += new EventHandler(MvcApplication_AuthorizeRequest);
         }

         void MvcApplication_AuthorizeRequest(object sender, EventArgs e)
         {
             var id = Context.User.Identity as FormsIdentity;
             if (id != null && id.IsAuthenticated)
             {
                 var roles = id.Ticket.UserData.Split(',');
                 Context.User = new GenericPrincipal(id, roles);
             }
         }

Roles Code

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

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

就写到这里,洗澡去了。

ASP.Net MVC4 登录的更多相关文章

  1. asp.net mvc4 登录界面

    说明:开发环境 asp.net mvc4 c#语言 1.项目目录结构 2.Login控制器中 public ActionResult Index() { return View(); } 对应Inde ...

  2. asp.net mvc4 过滤器的简单应用:登录验证

    直接上代码,不要说话. ASP.NET MVC4过滤器的简单应用:验证登录 [AcceptVerbs(HttpVerbs.Post)] public ActionResult login(FormCo ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(19)-权限管理系统-用户登录

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(19)-权限管理系统-用户登录 我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先 ...

  4. 初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录

    初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-24 一.创建T4模板,建 ...

  5. 从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程

    从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程   用户登录与权限验证是网站不可缺少的一部分功能,asp.net MVC4框架内置了用于实现该功能的类库,只需要简单搭 ...

  6. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...

  7. Asp.Net MVC4入门指南(1): 入门介绍

    前言 本教程将为您讲解使用微软的Visual Studio Express 2012或Visual Web Developer 2010 Express Service Pack 1 来建立一个ASP ...

  8. windows server 2012 r2 iis8.5 部署asp.net mvc4/5程序小结

    windows server 2012 r2 iis8.5 部署asp.net mvc4/5程序小结 原文链接:http://www.xuanhun521.com/Blog/66d491f8-b479 ...

  9. Asp.net Mvc4默认权限详细(下)

    前言 菜鸟去重复之Sql的问题还没有得到满意的答案.如果哪位大哥有相关的资料解释,能够分享给我,那就太谢谢了. 以后每发表一篇博文我都会将以前遗留的问题在前言里指出,直到解决为止. 本文主要在于探讨一 ...

随机推荐

  1. jquery实现简单的ajax

    -->html页 1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  2. Android 开源项目分类汇总

    Android 开源项目分类汇总 Android 开源项目第一篇——个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView ...

  3. 二十、Android -- SDcard文件读取和保存

    背景                                                                                            一些东西可以 ...

  4. JSP之邮箱检验

    首先创建Email类继承Serializable接口以启用其序列化功能,而序列化又是为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性.序列化接口没有方法或字段,仅用于标识可序列化的语义. ...

  5. Jquery操作radio,checkbox,select表单操作实现代码

    一 .Select jQuery获取Select选择的Text和Value: 1. $("#select_id").change(function(){//code...}); / ...

  6. centos安装与基本使用

    1.      插入安装光盘 2.      进入试用 3.      在试用的桌面系统选择安装到硬盘 4.      选择安装语言 5.      选择基本存储或者专门的存储设备 6.      - ...

  7. JqueryPagination 分页插件使用说明

    JqueryPagination是个简单轻量级的分页插件,使用起来很容易,只要初始化一个实例,并设置总数量.翻页回调函数.其它参数就可以实现无刷新分页功能了 1 首先引入相关js文件: <lin ...

  8. 19款绚丽实用的jQuery/CSS3侧边栏菜单

    jQuery作为一款主流的JavaScript前端开发框架,深受广告开发者的亲睐,同时jQuery有着不计其数的插件,特别是菜单插件更为丰富,本文将要为大家介绍20个绚丽而实用的jQuery侧边栏菜单 ...

  9. Struts2+Hibernate4+Spring4整合

    jar包 配置文件 web.xml文件 <!-- needed for ContextLoaderListener --> <context-param> <param- ...

  10. Java获取操作系统信息

    今天在看jdk的demo时候发现java获取系统操作系统的一些信息,例如内存使用情况,于是自己也想研究研究! 百度一番,发现有2种方法! 1.sun自带的API 2.第三方jar(Sigar)   先 ...