Rails实现一个blog项目02-登录功能和session的实现
2013-09-28 18:03
489 查看
1.首先生成model user
rails g model user login:string hashed_password:string salt:string
去schema.rb检查无误后就近行数据的迁移
这个博客暂时不开放注册,利用console增加用户
2.为user的login增加数据验证
3. 这一步去做登录的功能,先生成sessions的controller
rails g controller sessions
4.添加路由
resources :sessions
5.在sessions控制器中建立new和create两个action
6.建立登录页面
7.在Model中实现密码认证方法
8.实现具体的create方法
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
相关文章推荐
- Rails实现一个blog项目01-基本功能blog和comment的实现
- node.js学习笔记(3)-node.js结合mysql数据库实现的web项目中常见功能--登录验证、session传值、拦截器、ajax传值等
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- session、cookie与“记住我的登录状态”的功能的实现
- React Native实战项目企业通信录(含视频教程)- 登录功能实现
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- 【vue+axios】一个项目学会前端实现登录拦截
- SSM整合框架与之用户登录功能项目的实现
- Flex结合java实现一个登录功能
- iOS学习笔记55- iOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- (转)session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- 通用权限管理系统组件 中后一个登录的把前一个登录的踢掉功能的实现
- fastdfs 新添加一个项目的图片目录 实现独立的上传下载功能
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- (详细)Hibernate查询技术(Query、Session、Criteria),Hibernate的三种状态,Hibernate集合struts2实现登录功能(二)
- 超详细asp.net实现一个完整的登录功能
- 吴昊品工程级别软件项目 Round 5 —— 用JavaScript实现一个简单的注册登录系统
- cookie,session,实现服务器记忆用户登录状态功能