我正在使用php Slim Framework + Eloquent ORM和AngularJS创建基于休息的应用程序。我想在我的应用程序中创建一个安全的身份验证系统,以便它可以在两个环境中运行(ONLINE / OFFLINE)。实际上我担心离线模式,如果任何客户端复制我的代码并粘贴到另一个计算机系统,那么它将没有任何问题。所以我想要防止这种情况,以至于每次第一次启动应用程序时它都会验证用户密钥然后应用程序将打开,否则会说“取消授权用户”
请给我一些使用PHP构建dektop / offline应用程序的建议。
这是我目前用于在线模式的代码...当软件处于OFFLINE状态时(由于互联网连接),它会失败。
// route middelware for simple API authentication
function authenticate(\Slim\Route $route) {
$app = \Slim\Slim::getInstance();
$uid = $app->request->headers("uid"); //$app->getEncryptedCookie('uid');
$username = $app->request->headers("username");
$password = $app->request->headers("password");
$key = $app->request->headers("key");
if(validateUserKey($uid, $key) === false) {
$app->halt(401, "Unauthorize User");
if(validateUserLogin($username, $password) === false) {
$app->halt(200, "Invalid Username and Password");
}
}
}
function validateUserKey($uid, $key) {
// I am maintaining a table which has my client list with the API key so
// this function will hit a url to my server like(www.dev-server.com/validateKey?uid=$uid&key=$key) for authentication
}
function validateUserLogin($username, $password) {
//it will validate the uname and password in from local DB
}
答案 0 :(得分:1)
由于PHP是一种服务器端语言,我假设您不想让用户运行自己的Web服务器以便在没有Internet连接的情况下使用您的应用程序,因此PHP实际上不是等式这里。
换句话说;如果您打算允许用户在没有互联网连接的情况下继续使用您的应用程序,则必须在客户端应用程序中解决问题,即使用HTML,Javascript和本地存储。您的问题不够具体,无法告诉您如何执行此操作,但Google is your friend。
关于用户认证;由于客户基本上不受你的控制,我建议你专注于服务器端的安全性;例如,需要一次互联网连接进行身份验证,将凭据保留在本地缓存中,并允许用户在脱机时无需进一步检查即可使用您的应用程序,然后要求他们在重新联机并重新进行身份验证时重新进行身份验证脱机后更改回服务器。
如果没有关于您的应用程序及其使用方式的更多信息,很难确切地说明如何解决这个问题,希望我的想法可以提供帮助。