Arduino 中国 | Flamingo EDA

Mar/07

11

用engines和login_engine实现用户登录

目前RoR的最新版本是1.2.2,但engines和login_engine对其该版本的支持似乎还有些问题,booksforce.com在实际开发时使用的是engines 1.1.4和login_engine 1.0.4,而相应的RoR版本则为1.1.6:

# gem install rails -v 1.1.6 --include-dependencies

接下来创建RoR工程:

# rails booksforce

engines和login_enginej是以RoR插件形式存在的,做为RoR工程外部引入的资源,最好的办法是借助SVN管理外部资源的办法。只需要在工程的根目录下依次执行下述命令即可:

# svn propset svn:externals "engines http://svn.rails-engines.org/engines/tags/rel_1.1.4" vendor/plugins
# svn propset svn:externals "login_engine http://svn.rails-engines.org/login_engine/tags/rel_1.0.4/" vendor/plugins

在RoR工程的根目录下执行update命令下载相应的插件:

# svn update

在config/database.yml文件中设置好数据库参数之后,将LoginEngine的配置和启动代码加入到config/environment.rb文件中:

module LoginEngine
config :salt, "your-passwd-salt"
config :user_table, "users"
config :use_email_notification, false
end

Engines.start :login

参数use_email_notification表示不启动自动邮件提示的功能,我们可以今后需要的时候再配置该功能。
接下去修改app/controllers/application.rb文件,通过before_filter来过滤未经授权的用户请求:

class ApplicationController < ActionController::Base
include LoginEngine
helper :user
model :user

before_filter :login_required
end

现在可以在数据库中创建login_engine所需要的用户表(users)了,相应的MySQL 语句为:
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`login` varchar(80) NOT NULL default '',
`salted_password` varchar(40) NOT NULL default '',
`email` varchar(60) NOT NULL default '',
`firstname` varchar(40) default NULL,
`lastname` varchar(40) default NULL,
`salt` varchar(40) NOT NULL default '',
`verified` int(11) default '0',
`role` varchar(40) default NULL,
`security_token` varchar(40) default NULL,
`token_expiry` datetime default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
`logged_in_at` datetime default NULL,
`deleted` int(11) default '0',
`delete_after` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

最后,不要忘了在RoR工程根目录下执行rake db:migrate:engines命令,完成数据库的迁移,在这个过程中login_engine会在数据库中创建password_history表。

# rake db:migrate:engines ENGINE=login

RoR工程启动之后,可以通过/user/login来验证用户登录功能是否正常,就这么简单:-)

RSS Feed

No comments yet.

Leave a comment!

<< 用FileColumn实现图片上传

Find it!

Theme Design by devolux.org