通常我们在做访问权限管理的时候会把用户正确登录后的基本信息保存在Session中然后用户每次请求页面或接口数据的时候代上会话状态即能拿到Session中存储的基本信息Session的原理,也就是在服务器端生成一个SessionID对应了存储的用户数据,而SessionID存储在Cookie中,客户端以后每次请求都会带上这个Cookie,服务器端根据Cookie中的SessionID找到存储在服务器端的对应当前用户的数据或者使用Cookie会话。

FormsAuthentication是微软提供给我们开发人员做身份认证使用的。通过该认证我们可以把用户Name和部分用户数据存储在Cookie中,通过基本的条件设置可以,很简单的实现基本的身份角色认证。

  下面案例是在不使用Membership的情况下使用系统提供的权限实现基于角色访问、控件权限实现。

a、登录设置用户权限信息

  1、创建认证信息票据(FormsAuthenticationTicket)

    属性:

   注:若不是持久Cookie,Cookie的有效期Expiration属性有当前时间加上web.config中timeout的时间,每次请求页面时,在验证身份过程中,会判断是否过了有效期的一半,要是的话更新一次cookie的有效期;若是持久cookie,Expiration属性无意义,这时身份验证票的有效期由cookie的Expires决定;UserData:储存用户特定的身份权限识别码string类型(超级管理员...)

  2、加密票据FormsAuthentication.Encrypt(FormsAuthenticationTicket对象)

  3、将票据信息添加到Cookie对象中输出给前端(Cookie会话)

  4、浏览器加密后的信息

b、获取认证信息

  1、用户是否有权限访问

    登录后在内容页我们可以通过当前请求的User.Identity.IsAuthenticated 得到是否通过了此用户验证;

  2、获取用户权限等级信息

可以通过读取Request 中的Cookie 解密,获取到Ticket再从其中获取uname 和 userData (也就是之前存储的限识别码)。

c、退出登录(删除浏览器中的票据FormsAuthentication.SignOut())

Session相比:

  区别:

     a、FormsAuthentication依赖与Cookie存在,当禁止浏览器Cookie,Session可以URL重写

      b、存储方式不同(Cookie将信息存储在客户端,Session信息存储在服务端)

     c、验证权限方式不同(用FormsAuthentication时判断User.Identity.IsAuthenticated是否为True。User.Identity.Name是保存的数据同等与session["unique"],Session时判断session["unique"]==NULl是否为空)

     d、Cookie单个信息保存数据不能超过4K,Session存内容取截与内存大小

     e、Cookie保存的是字符串,Session保存的是对象

        相同:都是用来跟踪浏览器用户身份的会话方式

FormsAuthentication权限管理的更多相关文章

  1. ASP.NET权限管理

    ASP.NET Web Forms权限管理: 我要将一个文件夹只能让一个用户组访问怎么办? 可否在网站根目录下的web.config里这样设置: <location path="adm ...

  2. mvc5权限管理(简单登录):ActionFilterAttribute

    效果图: 1.控制器 public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(User ...

  3. mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理

    1.mvc5+ef6+Bootstrap 项目心得--创立之初 2.mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理 3.mvc5+ef6+Bootstrap 项目心得--WebG ...

  4. 【源码笔记】BlogEngine.Net 中的权限管理

    BlogEngine.Net 是个功能点很全面的开源博客系统,容易安装和实现定制,开放接口支持TrackBack,可以定义主题配置数据源等等.可谓五脏俱全,这里先记录一下它基于Membership的权 ...

  5. ASP.NET MVC:窗体身份验证及角色权限管理示例

    ASP.NET MVC 建立 ASP.NET 基础之上,很多 ASP.NET 的特性(如窗体身份验证.成员资格)在 MVC 中可以直接使用.本文旨在提供可参考的代码,不会涉及这方面太多理论的知识. 本 ...

  6. MVC身份验证及权限管理

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

  7. 权限管理学习 一、ASP.NET Forms身份认证

    说明:本文示例使用的VS2017和MVC5. 系统无论大小.牛逼或屌丝,一般都离不开注册.登录.那么接下来我们就来分析下用户身份认证. 简单实现登录.注销 以前在学习.net的时候不知道什么Forms ...

  8. 【转】权限管理学习 一、ASP.NET Forms身份认证

    [转]权限管理学习 一.ASP.NET Forms身份认证 说明:本文示例使用的VS2017和MVC5. 系统无论大小.牛逼或屌丝,一般都离不开注册.登录.那么接下来我们就来分析下用户身份认证. 简单 ...

  9. MVC身份验证及权限管理(转载)

    from https://www.cnblogs.com/asks/p/4372783.html MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供 ...

随机推荐

  1. Ubuntu 16.04安装Atom(加强版文本工具)

    安装: sudo add-apt-repository ppa:webupd8team/atom sudo apt-get update sudo apt-get install atom 或者直接上 ...

  2. SAS编程基础 - 数据获取与数据集操作(1)

    1. 数据来源 SAS数据来源主要有两种:一是通过input语句创建,另外一种方式是通过外部数据文件获取. 1.1 libname 1.2 odbc 1.3 passthrough 1.4 impor ...

  3. canvas 插件

    http://www.jq22.com/yanshi2217 参考这个站 发现一些比较有用的canvas插件: 线形图插件:jquery.sparkline 2.1.1 excanvas 环形图,饼状 ...

  4. 【转】winform 程序实现一次只能打开一个该程序

    ref: http://www.jb51.net/article/17747.htm //在程序的main函数中加入以下代码 bool createdNew; System.Threading.Mut ...

  5. Java之旅hibernate(2)——文件夹结构

    Hibernate的jar最好是到官网上进行下载.下载最新的稳定的版本号.之后进行解压,以下我们介绍一下hibernate的包结构. 1.      包结构 我们能够看到包文件夹结构发生了变化.我以5 ...

  6. kvm 安装

    一.  虚拟化 是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互相不影响,从而 ...

  7. u

    Atrrible /s/d –s –h  u盘修复

  8. Thinkphp中使用PHPmailer发送邮件

    在ThinkPHP\Extend\Vendor\目录下放入PHPMailer文件夹,里面包含以下文件 重置密码发送邮件 public function recover(){ if($this-> ...

  9. poj1151==codevs 3044 矩形面积求并

    Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21511   Accepted: 8110 Descrip ...

  10. servlet container:tomcat jetty and undertow

    1 spring boot内嵌容器支持tomcat.jetty和undertow 但是undertow性能最好,详见: https://examples.javacodegeeks.com/enter ...