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

作者:vkvi 来源:ITPOW(原创) 日期: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 的格式、约定就由您自己决定了。

相关文章