`

关于restful_authentication密码更新问题

阅读更多

使用restful_authentication插件时,进行更新密码操作时,如果传来密码为空时,会发现有关密码验证空值验证会失效

 

这是因为在

by_password.rb文件中,是这样记录的

 

 

    # Stuff directives into including module
    def self.included(recipient)
      recipient.extend(ModelClassMethods)
      recipient.class_eval do
        include ModelInstanceMethods
        
        # Virtual attribute for the unencrypted password
        attr_accessor :password
        validates_presence_of     :password,                   :if => :password_required?
        validates_presence_of     :password_confirmation,      :if => :password_required?
        validates_confirmation_of :password,                   :if => :password_required?
        validates_length_of       :password, :within => 6..40, :if => :password_required?
        before_save :encrypt_password
      end
    end # #included directives
 

 

 

      def password_required?
        crypted_password.blank? || !password.blank?
      end

 

此时crypted_password存在, crypted_password.blank?返回false, 而!password.blank?也返回false

所以password空值验证就失效了

validates_presence_of :password, :if => :password_required?

 

解决这个问题可以在更新之前,把crypted_password设置成nil

 

 

@user = User.find_by_id(params[:id])
@user.crypted_password = nil
if @user.update_attributes(:password => params[:password], :password_confirmation => params[:password_confirmation])
	flash.now[:notice] = "success"
else
	flash.now[:notice] = "error"
end
 

 

分享到:
评论

相关推荐

    关于Rails登录和验证插件http_authentication restful-authentication

    `restful-authentication`的核心组件包括会话管理、密码哈希存储、基于角色的权限控制等。在使用`restful-authentication`时,开发者需要配置数据库迁移,创建必要的模型和控制器,以及调整路由以支持认证流程。 在...

    Webapi_JWT_Authentication-master_webapi_jwt_token_

    这个过程通常涉及到密码哈希和盐值,以确保密码安全。 2. **JWT生成**:服务器使用私钥对Header和Payload进行编码(Base64URL无填充编码),然后将这两个编码后的字符串用"."连接。接着,使用私钥对整个字符串进行...

    Flask_Authentication

    **Flask_Authentication** 是一个基于 Python 的轻量级框架,用于在 Flask 应用程序中实现用户认证和授权。Flask 是一个微型 web 框架,它以其灵活性和简洁性受到开发者喜爱,而 Flask_Authentication 则是为 Flask ...

    Python语言开发RESTful API指南

    在当今信息技术飞速发展的时代,RESTful API已经成为构建互联网应用的基础。RESTful API提供了一种简单、高效、与语言无关的方法来构建Web服务。Python作为一种广泛使用的高级编程语言,以其简洁明了的语法、丰富的...

    rest-auth-proxy:基于Java的restful ldap-authentication微服务

    使用 rest-auth-proxy 微服务rest-auth-proxy 是一个基于 Java 的 restful ldap-authentication 微服务,可用于根据 ldap 和活动目录对用户进行身份验证。 它充当调用应用程序和 ldap 服务器之间的身份验证代理。 ...

    JWT_Authentication_Authorization:使用NodeJs构建的REST API,以MongoDB作为数据库,使用JWT令牌对用户进行身份验证和授权

    Node.js基于Chrome V8引擎,其非阻塞I/O模型和事件驱动架构使得它非常适合于构建高性能的网络应用,包括RESTful API。 2. **REST API**:REST (Representational State Transfer) 是一种网络应用程序的设计风格和...

    restful-authentication:不活跃的项目

    2008年5月更新了一些功能。 “稳定的较新版本”: : ““经典”(向后兼容)版本”: : “实验版”: : (更多模块化,需要测试和审查) 重要说明:如果您升级站点,则除非使用--old-passwords,否则现有的用户...

    C#多线程文件下载工具(访问restful形式接口)

    这可能涉及到向服务器发送用户名和密码,或者使用令牌(token-based authentication)进行认证。C#的HttpClient类可以方便地添加HTTP头以包含这些认证信息。 然后是“SQLite”数据库的使用。SQLite是一个轻量级的...

    CAS restful接口调用

    CAS(Central Authentication Service)是一种开源的单点登录协议和服务实现。它旨在减轻单一Web应用的登录流程,并为多个服务提供一个集中式的认证机制。CAS支持多种认证协议,包括但不限于HTTP Basic、...

    shiro登陆身份认证和权限管理 密码加密

    Shiro 内部的 `AuthenticationInfo` 和 `AuthenticationToken` 类参与这一过程,`Realm` 负责实际的认证逻辑,比如查询数据库验证用户名和密码。 2. **密码加密**:为了保护用户密码不被明文存储,Shiro 支持多种...

    RESTful-webservice-in-Java:用户注册和登录

    5. **认证和授权**:用户登录涉及身份验证(Authentication)和授权(Authorization)。认证通常是通过校验用户名和密码完成,而授权则是确定用户可以访问哪些资源。在RESTful服务中,常用的认证方式有Basic Auth、...

    WCF Restful服务表单身份验证

    **WCF RESTful服务表单身份验证** WCF(Windows Communication Foundation)是微软提供的一种用于构建分布式应用程序的服务框架,它支持多种通信模式,包括REST(Representational State Transfer)。RESTful服务以...

    Authentication-React_bcrypt

    "Authentication-React_bcrypt"项目就是这样一个示例,它演示了如何在React应用中集成bcrypt库进行用户密码的安全存储和验证。bcrypt是一种流行的密码哈希算法,特别适合于存储用户的敏感信息,如密码。 首先,我们...

    Identity.Authentication.and.Access.Management.in.OpenStack.2015.12.pdf

    - **API接口**:Keystone提供了一套RESTful API接口,允许开发者通过编程方式调用服务。 #### 五、Keystone与其他OpenStack服务的集成 Keystone作为OpenStack的核心服务之一,在整个OpenStack架构中起着至关重要的...

    user-authentication-app:该应用程序为用户实现了登录页面。使用node.js express框架的用于用户身份验证的RESTful API

    8. **安全性**:在实现用户认证时,必须考虑安全性问题,如密码哈希和盐值加密,防止SQL注入,以及防御跨站脚本(XSS)和跨站请求伪造(CSRF)攻击。 9. **测试**:为了确保应用的功能性和安全性,开发者通常会编写单元...

    BasicAuthentication:使用tomcat的基本身份验证

    #RESTful Web服务基本身份验证 基本身份验证是保护任何URL的最简单方法。 用户应具有服务器访问URL的权限。 这是容器管理的身份验证。 #什么是身份验证? 是识别可以访问系统的用户的过程。 Http基本身份验证是...

    SpringBoot+Spring Security+JWT实现RESTful Api权限控制的方法

    在本文中,我们将探讨如何使用Spring Boot、Spring Security和JSON Web Tokens (JWT)来实现RESTful API的权限控制。Spring Boot简化了构建基于Spring的应用程序流程,而Spring Security则提供了强大的安全框架,JWT...

    基于springboot,cas5.3,shiro,pac4j,rest接口获取ticket不再跳转cas server登录页

    本文将深入探讨如何利用Spring Boot、CAS 5.3、Shiro、Pac4J这四个强大的工具来构建一个高效且用户友好的REST接口,以获取CAS(Central Authentication Service)票据,避免用户被重定向到CAS服务器的登录页面。...

Global site tag (gtag.js) - Google Analytics