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

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

你可能感兴趣的:(rails中使用devise,怎么样记录登录成功和登录失败)