• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Still_Walking

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

rails中使用devise,怎么样记录登录成功和登录失败

rails中使用devise,怎么样记录登录成功和登录失败

最近做的一个项目,用的devise验证身份,但是需要做登录成功和登录失败的日志。该怎么做呢?

其实devise是基于Warden做的验证。

我的方法是这样的,加一个sessions的controller,它继承了Devise::SessionsController,这样可以覆写它的create方法,也就是登录的方法。

在这个create的方法里调用super,并给它传入代码块:

super do |resource|
      ip = request.remote_ip
      Trace.create(username: params[:user][:email], result: true, descs: "登录成功", ip: ip)
end

这样就做了登录成功的日志了。

失败的日志,我是用的Warden回调方法before_failure:

Warden::Manager.before_failure do |env, opts|
    params = Rack::Request.new(env).params
    Trace.create(username: params["user"]["email"],  result: false, descs: "登录失败") if params["button"].to_s=="create"
end

注意这里没有ip,ip的获取在create里,全部代码如下:

class SessionsController < Devise::SessionsController

  @@ip = ""
  def create
    @@ip = request.remote_ip
    super do |resource|
      Trace.create(username: params[:user][:email], method_name: "login", result: true, descs: "登录成功", category: "login", ip: @@ip)
    end
  end

  Warden::Manager.before_failure do |env, opts|
    params = Rack::Request.new(env).params
    Trace.create(username: params["user"]["email"], method_name: "login", result: false, descs: "登录失败", category: "login", ip: @@ip) if params["button"].to_s=="create"
  end
end

不知道有没有更好的方法,如果有的话,麻烦告知一下,谢谢。

posted on 2016-08-16 16:19  limanxian  阅读(740)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3