DNN架站确实非常方便,扩展功能也很丰富,制作皮肤也较为灵活,但是由于DNN的架构过于复杂,而且拥有非常强大的用户权限管理模式,故而在按实际需求自定义用户注册页面时遇到了不少麻烦。从DNN的架构来看,可以做到部分定制自己的用户注册表单;但如果要把UserName,FirstName,LastName等表单输入项删掉,除了注册页面文件Register.ascx要改之外,数据库的dbo.Users,dbo.Profile,dbo.UserProfile,dbo.UserPortals,dbo.UserRoles,dbo.aspnet_Users,dbo.aspnet_Membership等相关表都需要修改,相关的存储过程也需要修改,UserInfo、USerController以及使用到userinfo的相关类别全部都要改,涉及到几乎整个权限架构,短期应该是不太可行的,除非重新开发用户及权限管理模块。
通过LumigentLogExplorer记录DNN一次完整的注册操作涉及到的对数据库中表操作的目录如下:
使用DNN支持的管理用户档案属性,可以通过Admin>User Accounts>Manage Profile Properties添加新档案属性,实现增添用户注册选项,但是的确无法满足一些具体的如用户身份验证需求。
于是,只能通过编写DNN模块以辅助完成此项功能。
功能需求:1.在用户通过身份验证之后,才能进入DNN注册页面进行注册操作。 >>查看详细
2.在用户完成注册操作之后,返回显示用户注册信息,同时在数据库中记录用户身份信息。 >>查看详细
实现步骤:1.创建用户验证模块Validation,以及用户信息返回模块Session。
Validation模块用于验证S/N条码和生产条码的匹配性,通过验证则赋予注册资格。
Session模块用于在收集用户注册信息之后关联保存用户注册信息和用户所持显卡条码信息,并且创建验证用户表[xjt_ValidUsers]信息。
2.在DNN中创建Validation页面,将Validation页面设置为DNN默认的Register Page,用户在点击注册后首先跳转到验证页面进行验证。
然后在此页面添加Validation模块,用于完成验证功能,验证成功后跳转到DNN默认注册页面Register.aspx。
在DNN中创建Session页面,将成功注册后跳转页面设置为Session页面,以在成功注册后关联注册信息和用户所持显卡信息。
然后在此页面添加Session模块,用于显示注册用户信息,并向验证用户表[ValidUsers]插入新用户信息,以及更新验证条码表[Validation]中IsValid,CreatedDate。
遇到问题:用户直接登录时,由于无法获取Session["Username"]而导致Session模块无法显示用户信息。
解决方法:通过UserInfo.Username可以直接调用用户登录名,同样可以调用UserInfo.UserID和UserInfo.CreatedOnDate。
3.在DNN数据库中创建新表[xjt_Validation],[xjt_ValidUsers]。
[xjt_Validation] table structure
[xjt_ValidUsers] table structure
4.将ATI国内出货条码与生产条码对应表完全导入[xjt_Validation]表。
5.将Validation,Session模块安装到DNN站点上,同时修改模块中数据库连接字符串conn。
conn = New SqlConnection("Server=(local);Database=databasename;uid=username;pwd=password")
6.测试,在不影响DNN默认注册功能的同时,成功完成验证,注册成功后,成功修改xjt_Validation,xjt_ValidUsers表,OK。