关于Membership/Role您可能不知道的细节
1.关于System.Web.Security.Membership.ValidateUser("username", "password")
每次调用这个时,您注意到背后都执行了哪些sql语句吗?
(a)用户名不存在时,将执行以下语句 exec dbo.aspnet_CheckSchemaVersion @Feature=N'Common',@CompatibleSchemaVersion=N'1'
exec dbo.aspnet_CheckSchemaVersion @Feature=N'Membership',@CompatibleSchemaVersion=N'1'
exec dbo.aspnet_Membership_GetPasswordWithFormat @ApplicationName=N'APP_LUCKTY',@UserName=N'username',@UpdateLastLoginActivityDate=1,@CurrentTimeUtc=''2009-06-02 12:22:34:563''
(b)用户名存在时,除上面的语句外,还将多执行以下二条语句 exec sp_reset_connection
exec dbo.aspnet_Membership_UpdateUserInfo @ApplicationName=N'APP_LUCKTY',@UserName=N'yjmyzz@126.com',@IsPasswordCorrect=0,@UpdateLastLoginActivityDate=1,@MaxInvalidPasswordAttempts=999,@PasswordAttemptWindow=999,@CurrentTimeUtc=''2009-06-02 12:26:04:173'',@LastLoginDate=''2009-06-02 12:15:53:860'',@LastActivityDate=''2009-06-02 12:15:53:860''
关于sp_reset_connection,这个是干啥用的?
http://msdn.microsoft.com/zh-cn/library/ms187961(SQL.90).aspx上的解释
sp_reset_connection 存储过程由 SQL Server 用来支持事务中的远程存储过程调用。从连接池中重用连接时,该存储过程还将导致激发Audit Login 和 Audit Logout 事件。
2.if (User.Identity.IsAuthenticated){...}或if (User.IsInRole("RoleName")){...}时,系统是从哪里知道当前用户是否已经登录(或是否属于某一角色)?
(a.猜测一:)会查询数据库吗?当然不会,不信可以监测一下数据库的sql语句 (b.猜测二:)是在Session里吗?也不是,不信EnableSessionState="False"再试下,好象还是能运行 (c.猜测三:)是在Cookie里吗?对了,不信把Cookie禁用掉(建议用最BT的办法,把Documents and SettingsAdministratorCookies目录设置为任何用户都无权读取),然后就登录不了系统
3.除了FormsAuthentication.SignOut(),还有其它办法注销“当前”用户吗,或者如何注销“指定”用户?
从2中很容易想到,只要能找到特定用户的客户端Cookie,并使其过期就可以了,看下面的代码: HttpCookie _cookie = FormsAuthentication.GetAuthCookie(userName, true); _cookie.Expires = DateTime.Now.AddDays(-1); HttpContext.Current.Response.Cookies.Add(_cookie);
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 深入解析Apache NIFI的调度策略
- Linux 帮助命令及工具(tldr,man,help,info)
- Json Jolt教程
- Linux 日常操作
- 回顾|腾讯云 CFS 文件存储给 Serverless 云函数带来的业务新场景
- Apache NIFI Run Duration深入理解
- Controller services are daemons
- 动手体验JVM中Class对象的唯一性
- Java SPI机制
- Apache NIFI项目结构的类资源隔离机制
- Java类加载器
- Java反射原理
- 小谈WEB简史
- Java 常用验证方法(commons-validator,hutool)
- 类加载机制