• 关于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 Settings\Administrator\Cookies目录设置为任何用户都无权读取),然后就登录不了系统

    3.除了FormsAuthentication.SignOut(),还有其它办法注销“当前”用户吗,或者如何注销“指定”用户? 

    从2中很容易想到,只要能找到特定用户的客户端Cookie,并使其过期就可以了,看下面的代码:
    HttpCookie _cookie = FormsAuthentication.GetAuthCookie(userName, true);
    _cookie.Expires = DateTime.Now.AddDays(-1);
    HttpContext.Current.Response.Cookies.Add(_cookie);

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    高性能Ajax
    git基本操作
    文本字数过多时,以省略号显示
    前端开发环境工具汇总
    无阻赛的脚本(js脚本延迟方法)
    SparkContext的初始化(伯篇)——运行环境与元数据清理器
    java中的内部类和匿名内部类的使用
    SpringMVC拦截器中通过反射得到Controller方法注解时ClassCastException解决方式
    EM算法-数学原理及其证明
    Eclipse 创建 Maven 项目、Maven JavaWeb 项目
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1494889.html
Copyright © 2020-2023  润新知