授权(Authentication)
http://www.microsoft.com/taiwan/msdn/library/2003/dec-2003/vbnet10282003.htm
http://www.cnblogs.com/steeven/archive/2004/03/18/3523.aspx
一般概念:
1。初始化整个AppDomain的Principal策略(ASP.NET中策略由webconfig决定;更改无效;):
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.NoPrincipal);
有时候需要(但一般不需要,并且多次调用会产生Exception):
初始化整个AppDomain的Principal:
AppDomain.CurrentDomain.SetTreadPrincipal();
2。初始化Principal:
new Identity();
new Principal();
Thread.CurrentPrincipal = myPrincipal;
3。Principal的两个: Identity;
IsInRole();
4。Identity的属性: Name;
AuthenticationType;
IsAuthenticated;——一旦给Identity赋值了Name和AuthenticationType,该属性就为true;否则为false;
Login步骤:
1。检验uid;pwd;
2。正确,则初始化Identity(Name,AuthenticationType——则此时IsAuthenticated=true),和Principal;
3。错误,也初始化Identity(Name="",AuthenticationType=""——则此时IsAuthenticated=false),和Principal;
4。if(Identity.IsAuthenticated)
{
Principal.IsInRole();// 判断用户角色;
}
分类:
WebForm:
Forms认证:
设置web.config中认证方式为:Forms;及loginURL;
我想过程可能是这样的:每次请求一个页面,aspnet_isapi都会检查Identity.IsAuthenticated属性;
为True,允许用户访问页面资源;False,定向到loginURL页面;
所以Login的角色相当于Windows自己的验证,只不过是给Identity初始化;
但是,这是错误的:aspnet_isapi不会检查Identity.IsAuthenticated属性;这个属性只有自己的代码来检查;
相当于开发人员有三种编码依据:Name、Type、Role;据此判断流程;
所以重要的一点就是保存用户的Principal(即HttpContex.Current.User),可以用Cookie;或缓存(是否能行??);
设置IIS-安全性-匿名访问;
写Login代码,分两步:
一。验证UID、PWD,并给Identity初始化;
二。重定向到原始请求页面:FormsAuthentication
Windows认证:
WindowsIdentity myIdentity = new WindowsIdentity("kevin","Normal");//为什么总是“无法登陆”???
Thread.CurrentPrincipal = new WindowsPrincipal(myIdentity);
正确方法:
设置web.config中认证方式为:windows;
设置IIS-安全性-去掉匿名访问,勾选windows集成认证;
则客户端访问时,第一次出现登陆对话框;
WindowForm:
Windows认证:??
突然觉得,Identity不过是一个用户信息的包装而已,包装了Name和Type,还要一个表示“是否包装”过的标志位:IsAuthenticated。
Principal才提供了一些验证的功能,如IsInRole。
另外重要的一点时:他们两个都是和线程(Thread)相关的,我想这是与自己包装的类的最大区别。
所以在编写线程相关的代码时(如线程池),需要注意:新创建的线程将使用一个新的Principal和Identity,除非自己编码:
myNewTread.CurrentPrincipal = Thread.CurrentPrincipal;
myNewTread.Start();
(对于BeginInvoke是个例外,确不知道是什么意思。)
授权(Authentication)相关推荐
- Authentication vs. Authorization 验证与授权[整理]
Authentication vs. Authorization 验证与授权 Authentication vs. Authorization 验证与授权 It is important to cla ...
- Authentication vs. Authorization 验证与授权
Authentication vs. Authorization 验证与授权 It is important to clarify the difference between authenticat ...
- Authentication(认证方式)与 Authorization(授权)
1.Authentication(认证):认证方式现共有8种,可以启用一种或多种认证方式,只要有一种认证方式通过,就不再 进行其它方式的认证.通常启用X509 Client Certs和Service ...
- Authentication认证和Authorization授权的作用
认证 (Authentication): 你是谁. 授权 (Authorization): 你有权限干什么. 认证意味着确认自己的身份,而授权意味着授予对系统的访问权限.简单来说,认证是验证身份的过程 ...
- java授权失败_自定义Spring Security的身份验证失败处理方法
1.概述 在本快速教程中,我们将演示如何在Spring Boot应用程序中自定义Spring Security的身份验证失败处理.目标是使用表单登录方法对用户进行身份验证. 2.认证和授权(Authe ...
- django 用户授权与许可
在本教程中,我们将向您展示如何允许用户使用自己的帐户登录到您的网站,以及如何根据用户是否已登录及其权限来控制他们可以执行和查看的内容.作为演示的一部分,我们将扩展LocalLibrary网站,添加登录 ...
- VisualSvn Server介绍
1 .VisualSvn Server VisualSvn Server是免费的,而VisualSvn是收费的.VisualSvn是Svn的客户端,和Visual Studio集成在一起,但是不免 ...
- Web API 安全问题
目录 Web API 安全概览 安全隐患 1. 注入(Injection) 2. 无效认证和Session管理方式(Broken Authentication and Session Manageme ...
- IT英语职场之网管英语大全
Access Control List(ACL) 访问控制列表 access token 访问令牌 account lockout 帐号封锁 account policies 记帐策略 account ...
最新文章
- 机器学习(MACHINE LEARNING)MATLAB遗传算法
- weblogic集群的资料
- 需求分析 应该先写业务还是功能_产品经理必知:产品调研中功能调研的标准“姿势”...
- 【渝粤题库】陕西师范大学200371 拓扑学 作业 (专升本、高起本)
- bugzilla dbd-mysql_别人写的关于在Windows下安装BugZilla的说明,不错,值得借鉴
- 【OpenCV 例程200篇】72. 一维离散傅里叶变换
- jQuery的DataTables插件的使用方法[转]
- C++获取当前时间及计算当前时间距某个时间点的时间段
- cat >> ipconf << EOF > EOF是什么意思
- Atitit attilax要工作研究的要素 纪要 方案 趋势 方向 概念 理论
- TcpClient Class
- JavaScript中的文档碎片
- ssh远程安全访问路由器
- jquery动画顺序执行_深入理解jquery自定义动画animate()
- 【博客学习之旅】仰望星空,脚踏实地
- 键盘的空格键都有什么用处
- 39个让你受益的HTML5教程
- 企业信息安全之社工学审计
- 【云原生之Docker实战】使用Docker部署siyuan个人笔记系统
- http返回码301、302、307、305含义和区别
热门文章
- 仙岛求药(信息学奥赛一本通-T1251)
- python怎么打开excel文件并处理_python处理excel文件
- 域服务器批量修改用户密码,Windows域控制器批量创建用户
- python循环练习_Python循环练习
- 怎么查jupyter lab 内核_抗氧化精华推荐 CHA:LAB诗蕾泊帮你告别“零点肌”|抗氧化|精华-综合资讯...
- 好轮子收藏:一个支持几乎所有流行格式的图像加载库stb_image.h
- C++:程序运行崩溃后生成dump文件
- linux 如何查看一个进程空间所装载的共享库
- a标签的href传递信息
- 剑指Offer14-剪绳子12