重写DNN6.2注册、登陆、修改等个人中心
一、重写DNN注册
- 创建新注册页面 MyRegiseter.aspx
- 添加相应皮肤
- 创建注册模块(样式排版好)
- 实现注册功能
概要说明重写DNN注册页面需要更改的内容
- 后台:MyRegister:UserUserControlBase
- 为了方便,可将DesktopModules/Admin/Security/Register.ascx.cs相应的拷贝
- 主要拷贝这几个方法CreateUser(),UpdateDisplayName() 以及属性RedirectURL,CreateStatus,AuthenticationType,UserToken
这样只要在你的注册按钮事件 上 调用createUser(),就能注册新用户
详细说明方法和属性的内容
1.RedirectURL
这个属性比较简单,就是注册成功或失败返回的页面,根据get,取地址returnurl的参数值,进行跳转操作。如果该参数为空,也可以通过Glovals.NavigateURL(tabid)
来进行赋值跳转,tabid是每个DNN页面的对应数据库的ID。可在数据库表Tabs里查看
2.CreateStatus
这个属性的类型是 UserCreateStatus,这是个枚举,主要是用来显示当前状态,如果Success等,可按F12查看
在CreateUser()方法中,用来判断注册成功与否 CreateStatus=UserController.CreateUser(ref user)
UserController 类,包含了几乎所有用户的操作等内容,如注册方面,查看当前用户是否存在GetUserByName返回一个User类,如果为空,则不存在
User类,可以看做是用户信息的实体类
TestableUserController类,个人目前是用到,验证显示的用户名是否存在,GetUserByDisplayName(portId,text),portid为网站站点ID
3.AuthenticationType
目前没发现用处,你可在CreateUser()里,把他设置成string.empty,也不会报错
4.UserToken
如上,可设置为空,未见其功能
5.UpdateDisplayName()
修改当前的显示名称,跳转后现实名称,这步必加,否则会报错,用户可能为空
二、重写DNN登录
1.如上,添加好页面和控件、样式,
注意:在添加MyLogin页面的时候,in menu取消选中
2.分析DNN自带的Login后台 :位置:DesktopModules/AuthenticationService/DNN/Login.ascx
在OnLoginClick时,可以看到,UserCaptcha,这个是用来判断登录是否使用系统自带的图片验证码,如果你不用,可以把这个if去掉
ctlCaptcha就是系统自带图片验证码控件
登录的2个具体方法:UserController.ValidateUser(........, ref status)
和:OnUserAuthenticated(eventArgs)
ValidateUser(...,ref status) 就是验证用户是否授权和验证登录成功与否,status是返回状态,是个枚举UserLoginStatus
只要判断status是否不等于UserLoginStatus.Login_failure就可验证登录了
OnUserAuthenticated是个未开源的代码
后续...