Rails实现一个blog项目02-登录功能和session的实现
来源:互联网 发布:js arra保留字 编辑:程序博客网 时间:2024/06/10 05:45
1.首先生成model user
rails g model user login:string hashed_password:string salt:string
去schema.rb检查无误后就近行数据的迁移
这个博客暂时不开放注册,利用console增加用户
2.为user的login增加数据验证
- def password
- @password
- end
- def password=(pass) #password的set方法
- return unless pass #pass为空直接返回false
- @password = pass
- generate_password(pass) #产生实际的密码
- end
- private
- def generate_password(pass)
- salt = Array.new(10){rand(1024).to_s(36)}.join #加盐
- self.salt ,self.hashed_password =
- salt,Digest::SHA256.hexdigest(pass + salt) #利用SHA256进行加密 了
- end
3. 这一步去做登录的功能,先生成sessions的controller
rails g controller sessions
4.添加路由
resources :sessions
5.在sessions控制器中建立new和create两个action
6.建立登录页面
- <h1>Admin Login</h1>
- <%= form_tag sessions_path do -%>
- <label for="login">Login</label>
- <%= text_field_tag :login , params[:login] %>
- <label for="password">Password</label>
- <%= password_field_tag :password , params[:password] %>
- <%= submit_tag "Login" %>
- <% end %>
7.在Model中实现密码认证方法
- def self.authentication(login,password)
- user = User.find_by_login(login)
- if user && Digest::SHA256.hexdigest(password + user.salt) ==
- user.hashed_password
- return user
- else
- false
- end
- end
8.实现具体的create方法
- def create
- @user = User.authentication(params[:login],params[:password])
- if @user
- session[:user_id] = @user.id
- flash[:notice] = "Welcome #{@user.login}"
- redirect_to posts_path
- else
- flash[:notice] = "The login or password is not corrent."
- redirect_to new_session_path
- end
- end
0 0
- Rails实现一个blog项目02-登录功能和session的实现
- Rails实现一个blog项目02-登录功能和session的实现
- Rails实现一个blog项目01-基本功能blog和comment的实现
- Rails实现一个blog项目01-基本功能blog和comment的实现
- rails 实现登录和注册功能
- session实现登录功能
- 【Rails学习笔记】登录和退出功能实现
- 【Rails学习笔记】登录和退出功能实现
- session实现登录注销功能
- spring session和Redis数据库实现单点登录功能
- javaWeb的session和cookie实现记住密码自动登录功能简单实例
- 使用session实现登录判断功能
- 登录功能的实现
- rails实现功能示例
- 用Redis实现Session功能,实现单点登录
- 超详细asp.net实现一个完整的登录功能
- jsp+javaBean+servlet+mysql完整的实现一个登录功能
- 自动登录功能的实现
- iOS库--.a与.framework
- JS实现关闭当前子窗口,刷新父窗口及调用父窗口的方法
- 获取手机已安装应用的包名等信息
- 初创企业:融资有风险额度需谨慎
- 单点登录SSO的实现原理
- Rails实现一个blog项目02-登录功能和session的实现
- 3.22
- Coursera计算概论A(李戈)教授课程
- 【译】45种Javascript技巧大全 (推荐)
- 【Linux多线程】三个经典同步问题
- Rails实现一个blog项目01-基本功能blog和comment的实现
- Android性能优化典范(二)
- 【Matlab学习笔记】【数学形态学】膨胀、腐蚀、开运算、闭运算、击中击不中变换
- 使用soft hyphen(­)自动断行