gem devise

3 篇文章 0 订阅
3 篇文章 0 订阅
gem devise
   # for devise omniauth on user scope
    访问的是admin/sign_in ,根据path 来确定前面的路由值
    devise_for :users, path: "admin", controllers: {
      omniauth_callbacks: "omniauth_callbacks"
    }
    devise_scope :user do
      get 'mobile/sign_in', to: 'mobile/sessions#new', as: :new_user_session
      delete 'mobile/sign_out', to: 'mobile/sessions#destroy', as: :destroy_user_session
    end

    #devise默认使用email进行登陆,如果使用其他字段修改model中的:authentication_keys

     devise :database_authenticatable, :registerable,
            :recoverable, :rememberable, :trackable, :validatable,
            :authentication_keys => [:login]
     attr_accessor :login
    # 实现login的读写方法,此处是email和用户名登陆即可
      def login=(login)
        @login = login
      end

      def login
        @login || self.email || self.name
      end
    # 还需注意overwrite devise  self.find_first_by_auth_conditions
      def self.find_first_by_auth_conditions(warden_conditions)
        conditions = warden_conditions.dup
        if login = conditions.delete(:login)
          where(conditions).where(["lower(phone) = :value OR lower(email) = :value", { :value => login.downcase }]).first
        else
          if conditions[:phone].nil?
            where(conditions).first
          else
            where(phone: conditions[:phone]).first
          end
        end
      end
    # 很多时候不同的角色登陆成功后展现的页面不同(默认返回root_path    #此时可重写 after_sign_in_path_forafter_sign_out_path_for 方法
      def after_sign_out_path_for(scope)
        new_admin_stores_path
      end
      def after_sign_in_path_for(scope)
        root_path
      end
    # 某些路由访问(controller中)登陆后才可进行操作,此时可使用devise提供的
      before_action :authenticate_user! # 必须登陆后
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值