简单设计实现基于Forms认证的注册登录等用户基础服务

简介:

前一段时间博客园新闻里看到的雄文:你会做Web上的用户登录功能吗

弱弱地表示,按照文章中的标准,写了这么长时间的程序,还真的不完全会写web上的用户登录功能,或者说不能完全按照这个标准写出复杂的登录功能来。也许是被微软惯坏了,深刻反省。

好了,言归正传,下面就来重点说说本文要讨论的:实现基于Forms认证的注册和登录等用户基础服务。

众所周知,asp.net提供了“Forms”、“Windows”、“Passport”和“None”四种验证模式。在web.config文件中,经常看到类似这样的一段配置节:

    <authentication mode="Forms">
      <forms cookieless="UseCookies" defaultUrl="~/Default.aspx" loginUrl="~/Login.aspx" timeout="2880"></forms>
    </authentication>

这里的配置文件就和下面要讨论的被普遍使用的Forms认证模式有关。

要使用Forms认证,通常情况下,有了上面的配置,在你的代码中调用几个类如FormsAuthentication等等就可以实现基本的登录注册改密等功能了(如何调用MS的类库实现登录注册等功能不是本文讨论的重点)。

你可能会问MS是怎么实现用户注册登录功能的呢?这里只能简单告诉你,和MembershipProvider有关。如果你确实有心决定知道MS的登录组件是怎么工作的,不妨查看一下它的源码。一致认为微软做的太复杂了,而且不怎么符合实际的业务需求,至少我工作过的公司还没碰到过拿微软实现的那一套直接在项目中使用的。

对照着MembershipProvider的源码,自己简单整理并抽象出以下几个常用接口方法:

ContractedBlock.gif
IUserService

面向接口编程有多重要当然不需要多做说明。

接着,有接口自然还需要有具体实现。具体的实现无非按照特定的规则进行特定的处理:

ContractedBlock.gif
UserService


UserInfo是自定义的用户信息实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[Serializable]
public  class  UserInfo : IIdentity, IPrincipal
{
     public  int  UserId { get ; set ; }
 
     public  string  UserName { get ; set ; }
 
     public  string  Password { get ; set ; }
 
     public  int  UserType { get ; set ; }
 
     public  string  Email { get ; set ; }
 
     public  DateTime CreateDate { get ; set ; }
 
     public  DateTime UpdateDate { get ; set ; }
 
     public  string  Name { get ; set ; }
 
     public  string  AuthenticationType
     {
         get  { return  "Forms" ; }
     }
 
     public  bool  IsAuthenticated { get ; set ; }
 
     public  IIdentity Identity
     {
         get  { return  this ; }
     }
 
     public  bool  IsInRole( string  role)
     {
         return  false ;
     }
}

简单示例,没有列举其他常见属性。

DAO的实现就不贴了,无非访问库做一些CRUD的操作。

这样一个简单实用的用户服务大功告成……所以说做MS的程序员是幸福的,前提是你得熟悉原理思路清晰。

到这里你还会觉得web上的用户登录功能很难吗?不难吧?!

实际上你还可以继承MembershipProvider扩展实现自己的MembershipProvider,同时还可以实现自己的角色权限管理等常用用户相关功能,区区一个简单的登录功能自然不在话下。

当然你完全可以独树一帜,实现自定义的复杂规则下的注册登录安全认证等等功能,正如本文开篇提到的那片雄文所讲的那样。






本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2011/09/04/2166732.html,如需转载请自行联系原作者

目录
相关文章
|
12月前
|
存储 前端开发 PHP
构建一个简单的网站,包括用户注册、登录功能
构建一个简单的网站,包括用户注册、登录功能
225 1
|
小程序 NoSQL JavaScript
【易售小程序项目】”我的“界面实现+“信息修改“界面实现+登出账号实现+图片上传组件【基于若依管理系统开发】
【易售小程序项目】”我的“界面实现+“信息修改“界面实现+登出账号实现+图片上传组件【基于若依管理系统开发】
95 0
|
5月前
|
SQL JSON 缓存
小说系统方案搭建开发,实现系统的用户登录验证说明
本文总结了小说系统源码中常见的身份认证方式,涉及JWT和Shiro。传统的认证流程包括用户提交凭证、服务器保存Session数据、发送Session_id给客户端,后续请求携带Session_id。但这种方式在多服务器或跨域场景下扩展性差。解决方案有Session数据共享或持久化。作者将服务端维护Session信息的认证方式归类为传统方式,反之为非传统方式,后者扩展性更优。文中还介绍了实例项目的SQL建表结构,用于演示认证流程。
|
5月前
|
存储 JSON 安全
用户登录注册系统的安全性设计
用户登录注册系统的安全性设计
160 4
|
5月前
|
小程序 安全 JavaScript
.NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
.NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
.NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
|
XML 缓存 NoSQL
手把手实现第三方社交登录方式微信登录
手把手实现第三方社交登录方式微信登录
150 0
|
数据安全/隐私保护
MyCms 开源自媒体系统后台 角色管理&管理员管理操作说明
MyCms 开源自媒体系统后台 角色管理&管理员管理操作说明
167 0
|
编解码 数据安全/隐私保护
HarmonyOS实战—实现注册登录和修改密码页面
HarmonyOS实战—实现注册登录和修改密码页面
396 0
HarmonyOS实战—实现注册登录和修改密码页面
|
数据安全/隐私保护
用户注册登录系统 V2.0
# 准备空列表 users = [] # 准备当前在线用户 online_user = {} while True: # 打印系统提示 print("欢迎使用 用户注册登录系统V2.
1224 0