一般互联网应用,如人人网,微博,都是需要用户登录的,如果用户不登陆,就不能使用此网站。所以,这里都是用FormAuthentication,要求用户填写用户名与密码,然后登录成功后,FormAuthentication.SetAuthCookie()方式向客户端Cookie中写入一个认证Token.

一般企业内部的应用,企业内部信息系统,使用Windows Auhentication. 因为企业内部都有自己的域,员工的电脑都有这个域内部的一个ID,而且这个ID是唯一的,所有的操作都会通过这个ID进行。企业内部的信息系统是不需要用户注册的,用的都是这个ID,所以,使用Windows Authentication. 但是需要注意的是,FormAuthentication.SetAuthCookie()往往写入的都是很简单的字段,一般是username, 而真正系统中的User实体是一个很复杂的对象,有很多信息,所以,每次当用户进入这个系统后,程序会根据用户的ID或者username,找到数据库中对应的详细的User对象,然后放到Session中。一般这些操作是在Global.asax.cs中的Session_Start()中进行的。

protected void Session_Start(object sender, EventArgs e)
{
var securityHelper = new SecurityHelper();
securityHelper.Authenticate();
} public class SecurityHelper
{ private string GetWindowsVcnUserName()
{
// Get windows user
var loggedUser = System.Web.HttpContext.Current.User.Identity; if (loggedUser != null)
{
string username = loggedUser.Name;
username = username.Substring(username.IndexOf('\\') + 1);
username = username.ToUpper(); return username;
}
return null;
} public virtual bool Authenticate()
{
// Inject implementation of the UserService through DI
if (UserService == null)
{
UserService = Container.Resolve<UserService>();
} string userLoggin = GetWindowsVcnUserName(); // Get user from external authorization system
var user = UserService.GetUser(userLoggin);
if (user == null)
{
//说明数据库中没有这个用户,此时可以根据需要设定相应的逻辑,可以提示该用户不能访问此系统,也可以为此用户建立一个Guset账号,根据需要而定
} // Set session
System.Web.HttpContext.Session.Add("user", user);
return true;
}
}

此后,在该Session生存周期内,需要User信息的时候,只要从Session中拿就可以了,因为Session中有一个详细的User对象

关于ASP.NET MVC中Form Authentication与Windows Authentication的简单理解的更多相关文章

  1. asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法

    MVC中表单form是怎样提交? 控制器Controller是怎样接收的? 1..cshtml 页面form提交 (1)普通方式的的提交

  2. asp.net MVC中form提交和控制器接受form提交过来的数据

    1.cshtml页面form提交2.控制器处理表单提交数据4种方式方法1:使用传统的Request请求取值[HttpPost]public ActionResult AddNews(){    str ...

  3. ASP.NET MVC中使用Ninject

    ASP.NET MVC中使用Ninject 在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事 ...

  4. (转)Asp.Net MVC中身份认证和授权

    MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式,其中最常用的就是我们的Form认证,需要配置相应的信息.例如下面的配置信息: < ...

  5. Asp.net MVC中提交集合对象,实现Model绑定

    Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...

  6. Asp.net MVC中 Controller 与 View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用 ...

  7. ASP.NET MVC中实现多个按钮提交的几种方法

    有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...

  8. Asp.net MVC中提交集合对象,实现Model绑定(转载)

    Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现.有时候我们的Action方法中想要接收数组类 ...

  9. 【MVC】ASP.NET MVC中实现多个按钮提交的几种方法

    有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...

随机推荐

  1. Ajax提交进度显示实例

    概述:ajax提交比较大的文件的时候,我们希望能够看到它上传的进度,代码放下面了. <!DOCTYPE html> <html> <head> <meta c ...

  2. 通过adb把apk安装到系统分区

    通过adb把apk安装到系统分区 以谷歌拼音为例:GooglePinyin1.4.2.apk提取出so文件libjni_googlepinyinime_4.solibjni_googlepinyini ...

  3. mysql安装三 linux源码安装mysql5.6.22

    http://blog.csdn.net/beiigang/article/details/43053803

  4. SSH深度历险(四) Maven初步学�

    这几天接触这个词,非常多遍了,仅仅是浅显的体会到它在GXPT中的优点,功能之强大,又通过网络查询了资料进一步的认识学习了,和大家分享. Maven是基于项目对象模型(POM),能够通过一小段描写叙述信 ...

  5. eclipse svn最新更新地址

    http://subclipse.tigris.org/update_1.12.x http://subclipse.tigris.org/servlets/ProjectProcess?pageID ...

  6. 求好用的在线手册编写工具,能编写像bootstrap在线Doc那种的,想为OpenCenter写个在线手册

    原文地址:http://www.oschina.net/question/1014458_225711 各位OSCer的开源项目的在线说明文档都是用什么写的呢? 类似 http://v3.bootcs ...

  7. iOS 5解决Could not instantiate class named NSLayoutConstraint问题

    如果使用Xcode 4.5来新建项目,默认是支持AutoLayout的,但是AutoLayout是iOS 6的新特性,如果在iOS 5的simulator上运行程序,会出现Could not inst ...

  8. 5-05. QQ帐户的申请与登陆(25)(map运用)(ZJU_PAT)

    题目链接:http://pat.zju.edu.cn/contests/ds/5-05 实现QQ新帐户申请和老帐户登陆的简化版功能. 最大挑战是:据说如今的QQ号码已经有10位数了. 输入格式说明: ...

  9. Eclipse——浏览功能

    一,打开变量声明 或选择opendeclaration就能够查看变量的定义 二.打开类型层次结构(open type hierarchy) 或者点击F4 watermark/2/text/aHR0cD ...

  10. iOS获取网络类型的四种方法

    Reachability类只能区分WIFI和WWAN类型,却无法区分2G网和3G网. 网上也有些方法,却都存在Bug. 经过网上查找资料和测试,基本上总结了以下几种方法: 1.使用导航栏的方式:(私有 ...