创建用户:调用的是: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也支持单点登陆。
这个将来再看了。
分享到:
相关推荐
阿帕奇压路机 是基于Java的功能齐全的多用户和组博客服务器,适用于各种规模的博客网站。 Roller通常与Apache Tomcat和MySQL一起运行。 Roller由以下Maven项目组成: 滚子项目:顶级项目 ... 如何发布Roller: :
README.txt 该文件位于Roller源代码树的顶层。... 如何构建Roller: : 要在Eclipse上构建和运行Roller: : 如何构建源普通的Roller构建会创建通常适用于多个应用程序容器的产品,但是,请参见Roller Insta
App Fire Dice Roller :game_die: RPG骰子滚轴应用程序,可以选择保存掷骰来加快RPG的战斗速度,是RPG玩家和大师的理想选择。 使用React-Native创建的应用程序。概念掷骰子没有什么比这快的感觉,但是考虑到这一点,...
README.txt 该文件位于Roller源代码树的顶层。... 如何构建Roller: : 要在Eclipse上构建和运行Roller: : 如何构建源普通的Roller构建会创建通常适用于多个应用程序容器的产品,但是,请参见Roller Insta
dice-roller:Dice Roller是一款使用Kotlin语言练习能力的应用程序
Dice_Roller:一个简单的Android应用程序,掷骰子
Dice-Roller:为Android Kotlin Developer Nanodegree构建第一个应用程序
创建于:Lachlan Campbell 安装说明: 确保您使用的是Python 3.5或更高版本,我还没有测试过它是否可以在早期版本中使用,所以比起遗憾,最好还是确保安全。 确保使用命令'pip install pysimplegui'或'pip3 ...
tts-40k-roller:台式模拟器上用于战锤40k的压模辊
通常,您只想导入granite-fate-roller.js (环绕spectre.css )或granite-fate-roller-min.js (环绕spectre.min.css )。 假设您要导入granite-fate-roller.js : import {spectreStyles} from '@granite-...
DnD-Dice-Roller(使用 Java 8 编译) 桌面角色扮演游戏的虚拟骰子滚轮############################################### ###############################################虚拟骰子滚轮###########################...
由Noun项目的Les Kleuver创建的图标如何运行此应用程序? 如果要在开发人员模式下安装,以便仍然可以看到代码,请下载:icon16.png,icon19.png,icon38.png,icon48.png,icon128.png,dictionary.js,manifest....
Infinity Roller是无限游戏的自动初始属性滚动工具。 兼容性:博德之门原始传奇博德之门 EE、博德之门 2、博德之门 2 EE、冰风谷、冰风谷 EE
Amazon Web Services AutoScaling组滚轮AWS AutoScaling组的滚动更新! AWS AutoScaling组(ASG... 做得不错,做了一些额外的工作,进行了蓝/绿部署: 创建一个新的自动缩放组确保新ASG中的所有节点都正常运行终止旧的
)XML 的条目导入 Apache Roller。 用法 将 Apache Roller(使用 5.1.1 测试)安装到您的本地 Maven 存储库中 克隆这个仓库 cd wxr2roller; mvn 清洁包 编辑 run.sh 和 conf/roller-custom.properties 以适合您的...
当你第一次运行代码时,它会生成一个点文件~/.rss-roller.rc并且它会问你一些关于 RSS 文件的默认问题。 在这些字段中写入多少取决于您,但它们是创建有效 rss 文件所必需的。 最后两个问题将询问您 RSS 文件应该在...
骰子滚轮随机骰子辊无服务器AWS Rust模板使用以下命令引导应用程序的示例模板 :high_voltage: 无服务器框架 :high_voltage: 。 :sparkles: 特征 :crab: 轻松构建针对AWS Lambda的Rustlang应用程序 :motor_scooter: ...
Nihil骰子辊是用Lazarus / FPC编写的图形化多平台骰子辊。 它具有多种骰子(从2到999个面),并支持多种系统,例如White Wolf的oWoD和nWoD; West End Games的D6和Gray Ghost的软糖
这个插件的开发已经结束。 请升级到新的 。 滚轴 用于简单内容轮播的 jQuery 插件。 Formstone 图书馆的一部分。 凉亭支持 bower install Roller
创建此代码的目的纯粹是出于教育目的。使用将要运行程序的每个通道的通道ID(以新行分隔)粘贴到channels.txt中将您希望程序声明的每个字符的名称(用新行分隔)粘贴到channels.txt中。 每个角色的名称必须是角色的...