基于rails的schedule网站开发(11):记住我
来源:互联网 发布:linux公社ftp下载 编辑:程序博客网 时间:2024/05/22 10:59
abstract:
1. 生成随机字符串,当做记忆令牌;
2. 把这个令牌存入浏览器的 cookie 中,并把过期时间设为未来的某个日期;
3. 在数据库中存储令牌的摘要;
4. 在浏览器的 cookie 中存储加密后的用户 ID;
5. 如果 cookie 中有用户的 ID,就用这个 ID 在数据库中查找用户,并且检查 cookie 中的记忆令牌和数据库中的哈希摘要是否匹配。
title 1
title 3
1. 显示资料页面的链接: <%= link_to "Profile", current_user %>
这个链接可以写成: <%= link_to "Profile", user_path(current_user) %>
可以直接链接到用户对象,Rails 会自动把 current_user 转换成 user_path(current_user)。
2. 关于update_attribute存储:remember_digest:
def create user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) log_in user remember user redirect_to user else flash.now[:danger] = 'Invalid email/password combination' render 'new' end end
先是remember user →调用session_helper.rb里的…
def remember(user) user.remember cookies.permanent.signed[:user_id] = user.id cookies.permanent[:remember_token] = user.remember_token end
user.remember又调用models/user.rb里的…
def remember self.remember_token = User.new_token update_attribute(:remember_digest, User.digest(remember_token)) end
这里的 update_attribute(:remember_digest, ...)
并没有指明是哪个用户model里的:remember_digest更新!
所以我的理解是:
user.remember 里的update_attribute(…)就是user.update_attribute(…)
0 0
- 基于rails的schedule网站开发(11):记住我
- 基于rails的schedule网站开发(10):Rails 环境
- 基于rails的schedule网站开发(6):我的博客模板
- 基于rails的schedule网站开发(8):撤销操作
- 基于rails的schedule网站开发(9):一些疑惑
- 基于rails的schedule网站开发(17):动态流
- 基于rails的schedule网站开发(1):安装git并用git管理Rails程序
- 基于rails的schedule网站开发(2):Rails and Git 常用命令
- 基于rails的schedule网站开发(3):如何使用MySql开发(?)
- 基于rails的schedule网站开发(12):index View页面的重构
- 基于rails的schedule网站开发(16):可以继续研究的内容
- 基于rails的schedule网站开发(4):git 存档记录
- 基于rails的schedule网站开发(5):使用password_digest设置密码
- 基于rails的schedule网站开发(7):部署到heroku
- 基于rails的schedule网站开发(13):用send 方法改写authenticated?(...)
- 基于rails的schedule网站开发(14):第一次使用git stash
- 基于rails的schedule网站开发(15):学习如何测试
- 基于rails的schedule网站开发(19):新的远程仓库,新的部署,远程分支使用
- uva 10163——Storage Keepers
- 交友的基本配置
- inputstream outputstream 区别
- 跨浏览器兼容选择部分文本+跨浏览器获取字符编码
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- 基于rails的schedule网站开发(11):记住我
- PAT已级试题 1009. 说反话
- ARMv8 架构与指令集.学习笔记
- bzoj1143[CTSC2008]祭祀river
- 编写高质量iOS与OS X代码的52个有效的方法 之协议与分类
- PHP cookie session 及 ThinkPHP session 详解
- 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
- 机器学习:特征缩减技术(shrinkage): lasso和岭回归
- 跨浏览器获取可视浏览器的长度