Общий вход в систему для CakePHP и Android - PullRequest
0 голосов
/ 27 октября 2018

Я работаю в системе, которая использует CakePHP для веб-сайта.Я также разрабатываю приложения для Android, чтобы получить доступ к некоторым функциям на веб-сайте.Я хочу, чтобы система разделяла общий логин для CakePHP и моих приложений для Android.

У меня есть настройка входа в систему, работающая на веб-сайте, но я не могу войти в систему с помощью приложения для Android.Проблема, с которой я сталкиваюсь, заключается в том, как хешировать пароль, чтобы и CakePHP, и Android могли его прочитать.С моим приложением для Android я отправляю пароль API на сервер и, имея PHP-хэш, сравниваю его с паролем в базе данных.

Моя цель - создать единое место для имени пользователя и пароля длявеб-сайт и Android-приложения для доступа к логину.Я попробовал password_hash() функцию в php, но хешированный пароль не позволяет мне войти в систему. Я бился над этой проблемой уже более недели.

Любая помощь будет принята с благодарностью.Спасибо, Трой Маркер

Ниже приведен список для моего API:

<?php
   /* Phoenix Hospitality Software
    *
    * Android Application Program Interface V 1.0.1
    * API Database Operation File
    * Copyright (c) 2018 By Troy Marker Enterprises
    *
    * Based on code from Android MySQL Tutorial to Perform Basic CRUD Operation
    * Copyright (c) 2015 By Belal Khan from Simplified Coding
    * URL: https://www.simplifiedcoding.net/android-mysql-tutorial-to-  perform-basic-crud-operation/
    *
  */

/* Phoenix Hospitality Software Database Operation file */

class DbPhsOperation {

/* Class Variables */

private $con;

/* Class Constructor */

function __construct() {
    require_once dirname(__FILE__) . '/DbConnect.php';
    require_once '/includes/Cake/Auth/DefaultPasswordHasher.php';
    $db = new DbConnect();
    $this->con = $db->connect();
}

/** Logon function
  *
  * This function check for valid user credentials
  *
  * @param string $username - User requesting access
  * @param string $password - User password
  * @return $user[] - An array containing the users information
  *
  **/
function logon($username, $password1) {
    $stmt = $this->con->prepare("SELECT id, username, password, grade, department FROM users WHERE username = ?");
    //$hashedpassword = password_hash($password, PASSWORD_DEFAULT);
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $stmt->bind_result($id, $username, $password, $grade, $department);
    $hasher = new DefaultPasswordHasher();
    $hashedpassword = $hasher->hash($password1);
    echo $username . '-' . $password1 . '-' . $password . '-' . password_hash($password, PASSWORD_DEFAULT);
    if ($password == $hashedpassword) {
        echo 'Password passed';
        while($stmt->fetch()) {
            $user = array();
            $user['id'] = $id;
            $user['username'] = $username;
            $user['grade'] = $grade;
            $user['department'] = $department;
            array_push($users, $user);  
        }
        return $user;
    }
    echo 'password failed';
    return false;
}

}

Я также безуспешно использовал php-функции password_hash / password_verify.

В приложении CakePHP я использую хэш-пароль по умолчанию для хеширования пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...