主页

在个人博客中增加用户登录功能

2023-08-11 03:56PM

1. 先创建一个用户表

 bundle exec rails generate migration create_users

2. 在这个表中增加下面的内容

class CreateUsers < ActiveRecord::Migration
   def change               
       create_table :users do |t|
           t.string :login      
           t.string :password   
           t.timestamps         
        end
    end
end

3. 然后在这个表中增加一条数据,方便我们继续往下进行(打开rails console,在里面为表增加一条数据)

user = User.create(login: "user", password: "1234")

4. 然后在config/routes.rb文件中,增加路由

 resources :users do

     collection do

        get :show_login_page

        post :login

      delete :logout

     end

end

5. 创建对应的controller文件,然后在里面增加下面的内容

 class UsersController < ApplicationController
     def show_login_page
     end
    
     def login
       login = params[:login]
       password = params[:password]
        
       user = User.where('login = ?', login).last
      # 如果用户存在
      if user.present?
   
        # 判断密码是否正确
        if user.password == password
 
          # 当前用户是正确登录的
          session[:current_user] = user
          session[:is_user_login] = '管理员登录了!'
 
          Rails.logger.info "=== '登录成功'"
          redirect_to '/articles' and return
        else
          Rails.logger.info "=== 用户名对,密码不对"
        end
      else
        Rails.logger.info "=== '用户名不对'"
      end
 
     Rails.logger.info "=== '用户名与密码不匹配'"
     redirect_to :back, notice: '用户名与密码不匹配'
   end

   def logout
      session[:current_user] = nil
      session[:is_user_login] = '尚未登录'
 
      Rails.logger.info "=== '退出成功'"
      redirect_to '/articles'
    end
 end

6. 创建对应的models文件

class User < ActiveRecord::Base
end

7. 创建对应视图文件

    <p>请登录</p>

    <%= form_tag "/users/login", method: 'post'  do %>
        用户名: <%= text_field_tag "login", "" %> <br/>
        <p></p>
        密码: <%= text_field_tag "password", ""' %> <br/>
        <p></p>
        <%= submit_tag "提交" %>
     <% end %>

8. 然后再index 页面增加登录退出按钮(也可以增加在app/views/layout/application.html.erb文件中,我这边增加在了application.html.erb文件)

  <div>
      <% if session[:current_user].blank? %>
         <%= link_to '登录', '/users/show_login_page' %>
     <% else %>
     <%= link_to '退出', '/users/logout', method: :delete  %>
   <% end %>
   <%= link_to '主页', articles_path %>
  </div>

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论