ASP.NET Membership 开发-让自定义登录程序像 Membership 一样实战开发

作者:vkvi 来源:千一网络(原创) 日期:2011-4-14

ASP.NET 自带的用户登录程序很方便,但我们有时希望用自己的登录程序更灵活,或者我们要做单点登录,兼容 ASP.NET 自带的登录程序。

写在之前

约定一下,名称空间是 System.Web.Security。

首先,我们要启用 Forms 验证

记录登录信息

当我们的登录程序判断用户登录成功后,就要把这个会话记录下来,在 ASP 中一般用 Session,在 ASP.NET 中默认用 Cookie。

如上代码记录了当前登录的用户为 Admin,如果用户没关闭浏览器,那么这个会话会一直保持七天。

如果使用了 path、domain 等,则写 cookie 时要指明,具体可继续阅读本连载下一节。

判断是否登录和登录名

不要在记录登录信息的页面判断,因为页面一开始从客户端获取 Cookie 信息,由于那时还没有执行到记录登录信息的程序,所以没有关于登录成功的 Cookie 信息。后面执行到了记录登录信息的程序,也将 Cookie 写入了客户端,但 ASP.NET 此时已经不会去取这个 Cookie 了,只有在下一个页面,或刷新本页面后,才会获取到登录信息的 Cookie。

注销

要注意的是,后面就不要去画蛇添足地去清除什么 Cookie 了,那样返而导致退出不了。继续阅读:FormsAuthentication.SignOut() 无效?

获取自定义数据

前面谈到可以用 User.Identity.IsAuthenticated、User.Identity.Name 判断用户是否登录、获取用户名。但是我还想要用户的更多信息,比如角色,怎么办呢?一种方法是根据用户名到数据库中去找。还有一种方法是将这些信息在登录成功后直接记录到 FormsAuthenticationTicket 的最后一个参数中。

记录简单,关键是如何取。

这样就把 userData 取出来了,userData 的格式、约定就由您自己决定了。

你前面那位网友看了:offsetWidth、offsetHeight 算法

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
  • 1 楼:评论
    AAAAAAAAAAAAAAAAAAAAAAAAA
标题:必填
内容:
本站永远终止与捏造“罪名”不支付广告费的某度联盟合作。
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他