ASP.Net MVC4 登录
一月之前,工作室师兄给我们介绍博客,然后试着去申请了一个,一直不晓得更新什么,直到今天,才有了一点小想法。最近在做一个小网站,然后就在登录那一块犯愁了,止步不前。
以前对登录一直没有什么概念,以为登录就是一道门槛,是网络世界已经设置好了的,就像一座城,登录了就像进了城一样。但是这两天才比较深刻的认识到,网络世界其实并没有那么神奇,所谓登录,就是拿一张票给你,然后你每次想进做点事的时候,就检查一下你的票,看你有没有资格。所以现在才完全对登录有了一个正确的印象。
那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 登录的更多相关文章
- asp.net mvc4 登录界面
说明:开发环境 asp.net mvc4 c#语言 1.项目目录结构 2.Login控制器中 public ActionResult Index() { return View(); } 对应Inde ...
- asp.net mvc4 过滤器的简单应用:登录验证
直接上代码,不要说话. ASP.NET MVC4过滤器的简单应用:验证登录 [AcceptVerbs(HttpVerbs.Post)] public ActionResult login(FormCo ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(19)-权限管理系统-用户登录
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(19)-权限管理系统-用户登录 我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先 ...
- 初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录
初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-24 一.创建T4模板,建 ...
- 从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程
从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程 用户登录与权限验证是网站不可缺少的一部分功能,asp.net MVC4框架内置了用于实现该功能的类库,只需要简单搭 ...
- ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...
- Asp.Net MVC4入门指南(1): 入门介绍
前言 本教程将为您讲解使用微软的Visual Studio Express 2012或Visual Web Developer 2010 Express Service Pack 1 来建立一个ASP ...
- 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 ...
- Asp.net Mvc4默认权限详细(下)
前言 菜鸟去重复之Sql的问题还没有得到满意的答案.如果哪位大哥有相关的资料解释,能够分享给我,那就太谢谢了. 以后每发表一篇博文我都会将以前遗留的问题在前言里指出,直到解决为止. 本文主要在于探讨一 ...
随机推荐
- asp.net中用正则表达式验证数据格式
这是一个验证是否为数字的例子: Regex reg = new Regex(@"^[0-9]+\.{0,1}[0-9]*$");reg.IsMatch(textBox1.T ...
- ASP流程控制语句
ASP流程控制语句 1.if...then语句 单行: if 条件 then 语句 多行: if 条件 then elseif 条件 then 语句 elseif 条件 then 语句 else en ...
- javascript中的闭包。
function todo() { var var1 = 1; (function () { var var2 = var1 + 1; alert(var2); })(); } todo(); (fu ...
- SQL中各数据类型的长度、精度
在 Microsoft? SQL Server? 中,每个列.局部变量.表达式和参数都有一个相关的数据类型,这是指定对象可持有的数据类型(整型.字符.money 等等)的特性. SQL Server ...
- 基于系统的UIMenuController的使用及自定义UIMenuItem
1.前言 在开发中 UIMenuController 用得较少,偶尔遇到了,一时竟想不起来,因此做个回顾 2.系统默认支持 UIMenuController 的UI控件 UITextField UIT ...
- 7款经典炫酷的HTML5/jQuery动画应用示例及源码
jQuery是一款普遍受前端开发者欢迎的Javascript框架,但是开发者貌似更关注jQuery开发的插件,海量的jQuery插件让前端开发者非常方便.HTML5的加入让jQuery这个家族更加丰富 ...
- 配置Hibernate二级缓存步骤
配置Hibernate二级缓存步骤: 加入二级缓存的jar包及配置文件 jar包位置:hibernate-release-4.1.8.Final\lib\optional\ehcache下所有jar包 ...
- Essential C++ 学习笔记02--Array/Vector 与指针
Essential C++ 1.5-1.6节,3.1节笔记 Array/Vector/指针,难度偏大, 但若学习初期不熟悉基本用法,则难以写出有效代码. 1. 基本概念 Array 是一段连续内存,数 ...
- builder-设计模式
package com.wp.java.builder; import org.junit.Test; public class DoDoContactDemo { @Test public void ...
- SP避免Form重复提交的三种方案
SP避免Form重复提交的三种方案 1) javascript ,设置一个变量,只允许提交一次. <script language="javascript"> ...