【问题标题】:ERPNext: How can I generate user session without Password?ERPNext:如何在没有密码的情况下生成用户会话?
【发布时间】:2021-09-19 15:38:14
【问题描述】:

作为一个 ERPNext 新手,我正在为移动应用程序创建一个 REST API,其中的用例是,移动用户将发送一个使用 人脸验证 进行登录的请求,结果移动端的人脸认证,会返回User ID(同ERPNext UserID)。

作为参数,我将获得UserIDAPI request 的其他参数,作为响应,我必须发送一个为该User 生成的新session

应用解决方案:

  • 尝试通过基于UserID获取用户密码登录,这基本上给出了加密密码的加密错误。
  • 尝试绕过login并生成新的session,由于未添加密码而失败
  • 解密密码以用作新session 的参数

我现在的问题是,我没有正常格式的Password,需要生成一个有效的用户会话,用于下一个操作帖子face recognization(人脸验证已经通过SDK完成)。

【问题讨论】:

    标签: authentication session password-encryption erpnext


    【解决方案1】:

    您可以对 REST Api 使用基于令牌的身份验证,根据您收到 emailid 时的问题(与 erpnext 用户 id 相同),您可以识别用户并生成 api_key 和 api_secret,您可以返回这些密钥以响应您的请求,您还可以存储这些密钥并用于将来的请求进行身份验证

    你可以在这里参考文档https://frappeframework.com/docs/user/en/api/rest#1-token-based-authentication

    以下是示例代码,请注意代码未经测试,仅供参考

    @frappe.whitelist(allow_guest=True)
    def validate_user(email):
    user_email = frappe.db.get_all('User', filters={'name': email}, fields=['name'])
    user = frappe.get_doc('User', user_email[0]['name'])
    
    api_generate = generate_keys(user.name)
    user_resp = frappe.get_doc('User', user.name)
    
    frappe.response["message"] = {
        "status": 1,
        "message": "Authentication success",
        "api_key": user_resp.api_key,
        "api_secret": api_generate,
        "username": user.username,
        "email": user_resp.email,
        "role": user_resp.roles[0].role
        }
    
    
    def generate_keys(user):
    user_details = frappe.get_doc('User', user)
    api_secret = frappe.generate_hash(length=15)
    
    if not user_details.api_key:
        api_key = frappe.generate_hash(length=15)
        user_details.api_key = api_key
    
    frappe.db.set_value('User', user, 'api_secret', api_secret)
    
    return api_secret
    

    【讨论】:

    • 如果 api_key 和 api_secret 被泄露,您将如何撤销它?
    • @pepe 你可以调用 generate_keys() 函数
    猜你喜欢
    • 2019-10-24
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2011-04-18
    • 2016-09-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多