浏览 6100 次
锁定老帖子 主题:rails登录功能的实现
精华帖 (2) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (14)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-27
controller代码 def login session[:user.id] = nil if request.post? user = User.authenticate(params[:email],params[:password]) if user session[:user_id] = user.id redirect_to(:action =>"index") else flash[:notice] = '邮箱地址或密码错误' redirect_to(:action =>"login") end end end model代码user.rb def self.authenticate(email,password) user = self.find_by_email(email) if user expected_password = encrypted_password(password,user.salt) if user.hashed_password != expected_password user = nil end end user end private def self.encrypted_password(password,salt) string_to_hash = password + "song" + salt Digest::SHA1.hexdigest(string_to_hash) end def password @password end def password=(pwd) @password = pwd return if pwd.blank? create_new_salt self.hashed_password = User.encrypted_password(self.password,self.salt) end def create_new_salt self.salt = self.object_id.to_s + rand.to_s end 数据库迁移文件 class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.column :email,:string t.column :hashed_password,:string t.column :salt,:string t.timestamps end end def self.down drop_table :users end end 视图login.html.erb <% form_tag do%> <div class="form_row"> <label>邮箱:</label><%= text_field("user","email",:size=>"30")%>(请正确输入您的5-20位用户名) </div> <div class="form_row"> <label>密码:</label><%= password_field("user","password",:size=>"36")%>(请正确输入您的8-36位密码) </div> <div id="button"> <span><%= submit_tag '用户登录'%></span> 程序已经运行出来了,但是无论如何登录不进去,我保证密码和email没有输入错误,这是怎么回事呢?迷惑中,将继续努力寻找答案,也请大家给点意见。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-27
这东西有插件,尽量多用插件,减少重复劳动
|
|
返回顶楼 | |
发表时间:2010-05-28
最后修改:2010-05-28
哎,你贴出来这个代码没法看啊,乱的
建议多加几处 logger.debug 看看运行期的结果 |
|
返回顶楼 | |
发表时间:2010-05-30
最后修改:2010-05-30
http://www.cnblogs.com/rubylouvre/archive/2009/07/01/1512895.html
restful-authentication + declarative authorization 哥们,你可以考虑下用这两个插件弄弄,也许效果更好...(上面是参考案例)另外,代码最好高亮下... 另外,给你推荐下这个http://www.opensourcerails.com,可以看看别人是怎么做的 |
|
返回顶楼 | |
发表时间:2010-06-03
fireflyman 写道 http://www.cnblogs.com/rubylouvre/archive/2009/07/01/1512895.html
restful-authentication + declarative authorization 哥们,你可以考虑下用这两个插件弄弄,也许效果更好...(上面是参考案例)另外,代码最好高亮下... 另外,给你推荐下这个http://www.opensourcerails.com,可以看看别人是怎么做的 谢谢,这个资料非常详细! |
|
返回顶楼 | |
发表时间:2010-06-03
如果需要加入大量自己的代码,可以考虑nifty-generators
|
|
返回顶楼 | |
发表时间:2010-06-03
sirxenofex 写道 这东西有插件,尽量多用插件,减少重复劳动
直接装一下插件就可以了? |
|
返回顶楼 | |
发表时间:2010-06-03
此乃马甲 写道 sirxenofex 写道 这东西有插件,尽量多用插件,减少重复劳动
直接装一下插件就可以了? 你裝完當然要再看看文檔啦...或者找些別人做過的實例參考下就行了.一般情況下,github里的說明文檔足夠你使用插件了. |
|
返回顶楼 | |
发表时间:2010-06-10
fireflyman 写道 此乃马甲 写道 sirxenofex 写道 这东西有插件,尽量多用插件,减少重复劳动
直接装一下插件就可以了? 你裝完當然要再看看文檔啦...或者找些別人做過的實例參考下就行了.一般情況下,github里的說明文檔足夠你使用插件了. 那还写什么程序。。。整天装插件吧 |
|
返回顶楼 | |
发表时间:2010-06-10
此乃马甲 写道 fireflyman 写道 此乃马甲 写道 sirxenofex 写道 这东西有插件,尽量多用插件,减少重复劳动
直接装一下插件就可以了? 你裝完當然要再看看文檔啦...或者找些別人做過的實例參考下就行了.一般情況下,github里的說明文檔足夠你使用插件了. 那还写什么程序。。。整天装插件吧 用的上固然好..用不上就自己寫憋... 插件只是減少你一些工作量....有好的東西當然要用下拉...你也可以看看人家是怎么實現的,根據自己需求改改也是不錯的... |
|
返回顶楼 | |