`
zybing
  • 浏览: 457901 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Roller:创建用户

阅读更多

创建用户:调用的是:roller-ui/register.rol

 

响应的类为: org.apache.roller.weblogger.ui.struts2.core.Register

 

在Action中,首先判断配置参数: users.registration.enabled ,是否允许用户注册;

 

用户注册页面,有一个bean: ProfileBean,记录用户页面上在form中输入的信息

把系统的Locale、timezone都设置到Bean中。

 

然后获取参数:users.sso.enabled

来看acegi中是否有用户验证可用,并且从form中获得客户的用户数据

目前在配置文件roller.properties中的值是false ------- 如果是true,会怎么样? --- 后面有说明

返回INPUT(struts2的INPUT --- 对应字符串:input)

 

就是跳到页面:tiles.Register , 具体的页面为:/WEB-INF/jsps/core/Register。jsp

-------------------------------

 

在struts的配置文件中,采用了通配符

<action name="register!*" method="{1}" class=...>

 

页面里,直接提交到action的一个方法中:在Register.jsp中

<s:form action="register!save">

 

虽然采用了struts2,还是采用有bean方式的action,

-------------------------------

 

看注册用户保存的部分:

 

首先检验有效性:

    最前面一段还是判断SSO ----> 这个要看一下,到底是什么,否则对Acegi或者roller的用户管理会有缺陷。

   判断参数"username.allowedChars",看用户输入的用户名,是否在这些字符中

           ---- 用的是 commons-lang.jar中的 org.apache.commons.lang.CharSetUtils中的方法:keep

 

如果没有错误(AcctionSupport中的 hasActionErrors)

  从weblogger中得到 userMaanger

  创建一个user对象,把用户输入的数据,复制到这个User对象中。

      对密码做了特殊处理,如果用户设置了密码和密码确认,就重置密码

 

  用户是否需要通过邮箱进行校验: 通过参数 user.account.activation.enabled

     如果需要,把用户状态设置成 false,通过UUID创建一串字符串(UUID.randomUUID().toString())

       对校验码也进行校验:

           用户是保存在表:User中, 其中一个字段:activationCode保存校验码。

       如果新生成的校验码在数据库中能够找到,代表校验码需要再加工:

           再生成校验码,重复3次,如果其中一次在数据库中找不到就退出,如果校验码生成3次都有重复,抛出异常

 

 把用户信息保存下来。

    在用户管理中(UserManagerImpl),判断如果是第一个用户,就不用邮件校验用户了,

    检查用户名是否存在,如果存在抛异常。

 

   给用户赋予 editor的角色, 如果是管理员(第一个用户),增加admin角色

 

   保存:就通过strategy的 store方法,参数只有一个object,这个对保存任何对象都适用;

 

   保存后手工commit一下(weblogger.flush)

 

   如果需要邮件验证的话,并且用户的验证码不为空的话,发送邮件:

     通过MailUtil.sendUserActivationEmail

 

   页面跳转到:pending中,

   否则跳转到 SUCCESS

 

-----------------------------------------

 

这里面涉及到一个问题没有稿清楚:配置文件runtimeConfigDefs.xml的作用:

看这个文件中的配置,都是配置属性的缺省值,以及在程序中的property name和配置property文件的key之间对照关系,

 

是看程序没有看清楚:

   取参数user.account.activation.enabled,通过Webloggerruntimeconfig获取的,

   这个其实也是通过weblogger.getPropertiesManager()获取的参数

    也就是从 JPAPropertiesManagerImpl.java中获取。

  这些值都是从数据库中获取的,roller_properties表

 

-------------------------------

用户激活:

 如果是需要用户激活的,通过链接:/roller-ui/register!active.rol?activationCode=?进行激活

 激活流程很简单:

    从用户表中,根据激活码获取到用户,

                      然后将设置成enable,清除激活码

                      重新存盘

                      结束。

 

-------------------------------

在上面,提到用户在注册的时候,会检查参数:users.sso.enabled

sso:单点登陆,Roller也支持单点登陆。

 

这个将来再看了。

 

 

分享到:
评论

相关推荐

    roller:Apache Roller的镜像

    assembly-release :用于创建Roller的正式发行版 docs :ODT格式的压路机文档 it-selenium :使用Selenium的Roller的集成浏览器测试 文献资料 《 Roller安装,用户和模板指南》以ODT格式提供(适用于OpenOffice或...

    Infinity Roller:无限游戏的自动初始属性滚轮-开源

    Infinity Roller的核心功能是自动属性滚动,它能够按照用户预设的策略或算法,自动进行角色创建时的属性分配。通常,在这些游戏中,玩家需要手动尝试多次以获得最佳属性组合,而Infinity Roller则消除了这一繁琐过程...

    3DMAX卷曲修改器Roller下载

    这款插件能够帮助用户轻松创建出卷曲形状的模型,不仅限于静态的造型,还能生成逼真的卷曲和展开的动画效果。 Roller插件的主要功能在于提供了一种高效的方法来模拟物体的曲面变形,如卷起的毯子或飘扬的旗帜。在...

    roller

    这个平台允许用户创建、管理和发布多个博客,并且提供了丰富的API供开发者扩展其功能。接下来,我们将深入探讨与"roller"相关的技术知识点。 首先,从描述中给出的博文链接(尽管实际链接不可访问),我们可以推断...

    destiny-meme-roller:命运突袭的荒谬标注

    标题“destiny-meme-roller:命运突袭的荒谬标注”揭示了一个与网络游戏《命运》(Destiny)相关的项目,特别是围绕其“突袭”(Raid)模式的趣味内容。这个项目可能是社区成员为了娱乐或讽刺游戏中的某些元素而创建...

    lint-roller:滚动您自己的 JavaScript linter 配置文件

    1. **自定义规则**: lint-roller 允许用户创建自己的配置文件,这样就可以根据团队的编码风格和项目需求设置特定的规则。例如,你可以定义变量命名约定、缩进风格、行尾逗号等。 2. **集成现有规则**: 通常,lint-...

    DnD-Dice-Roller:桌面角色扮演游戏的虚拟骰子滚轮

    DnD-Dice-Roller(使用 Java 8 编译) 桌面角色扮演游戏的虚拟骰子滚轮############################################### ###############################################虚拟骰子滚轮###########################...

    Dice-Roller:为Android Kotlin Developer Nanodegree构建第一个应用程序

    Dice-Roller应用中,我们将创建一个Dice类来模拟掷骰子的行为。 3. **数据类**:Kotlin提供了数据类的概念,它自动实现了equals()、hashCode()和toString()等方法,简化了对象的比较和打印。 4. **扩展函数与属性*...

    roller安装

    "roller"是一个颇受欢迎的开源博客引擎,它为开发者提供了一个强大的平台来创建、管理和发布个人或组织的博客内容。本文将详细讲解roller的安装过程,并结合源码分析,探讨其工具的应用。 首先,我们了解roller的...

    Roller初体验

    5. **使用体验**:博主可能分享了使用Roller创建博客、发布文章、管理用户和评论的实际操作体验,这有助于读者了解Roller的用户体验和功能实用性。 6. **源码调试与开发**:对于开发者而言,可能会对博主如何使用...

    roller-install-guide.pdf

    - **注册用户与创建博客**:创建用户账号,并建立第一个博客。 #### 九、配置技巧 - **设置 Planet Feed Aggregator**:介绍了如何设置和配置 Roller 的 RSS/Atom 聚合器功能。 - **修改 security.xml 文件**:解释...

    die-roller:用Python和Tkinter制成的压模辊

    例如,"die-roller"可能包含一个按钮,当用户点击时,会模拟掷骰子并显示结果。 项目的核心部分可能是以下几个关键知识点: 1. **窗口和容器**:Tkinter中的`Tk()`函数创建主窗口,`Frame`类则可以用来组织和分组...

    dice-roller:应用程序来模拟骰子掷骰子并保存您的普通骰子。 使用真正的随机,并回退到伪随机

    通过深入研究dice-roller的源代码和配置文件,开发者可以了解其工作原理,定制自己的骰子模拟器,或者借鉴其设计思路来创建其他类似的交互式应用程序。无论是对游戏设计师、统计爱好者还是软件开发者,dice-roller都...

    roller install、user、template guide

    在IT行业中,"roller"可能是指一个开源项目或者软件工具,但具体信息不足,我们只能根据常规的安装、用户和模板指南来理解这个主题。以下是对这些概念的详细解释: 一、roller install(roller安装指南) 在安装...

    apache-roller-4.0.1

    - **博客平台**:Apache Roller提供了一个全面的博客平台,用户可以创建多个博客,每个博客都有自己的主题、用户权限和定制设置。 - **多用户支持**:Roller允许注册用户创建和管理自己的博客,同时支持用户之间的...

    Dice_Roller:一个简单的Android应用程序,掷骰子

    在Dice_Roller项目中,我们可以看到Kotlin简洁的语法和强大的功能如何被用于构建用户界面和处理应用程序逻辑。 首先,让我们来看看Dice_Roller应用的结构。项目名称"Dice_Roller-master"通常代表这是项目的主分支或...

    roller-user-guide.pdf

    - **Podcasting**:提供了如何利用Roller创建播客(Podcast)的教程,包括设置RSS Feed等。 - **客户端集成**:说明了如何使用第三方博客客户端工具与Roller集成。 #### 九、评论和Trackback - **评论通知**:解释...

    Apacheroller

    1. **创建数据库**: 为 Roller 创建一个新的数据库。 2. **检查 JDBC 驱动**: 确认已正确配置 JDBC 驱动。 3. **特殊考虑**: - **MySQL**: 确保表空间足够大,并且字符集设置正确。 - **Oracle**: 需要额外配置...

Global site tag (gtag.js) - Google Analytics