1. Lassen Sie uns zunächst darüber sprechen, was eine Schnittstelle ist: Einfach ausgedrückt ist eine Schnittstelle eine Brücke, die vom Server verwendet wird, um Daten an andere Programme oder Clients zurückzugeben
2 Schnittstelle: Rückgabe gemäß festen Parametern. Feste Daten. Wenn der Client beispielsweise a = 1 übergibt, gibt der Server den Namen von a zurück. Wenn der Client a = 2 übergibt, gibt der Server das Geschlecht von a zurück, jedoch keine anderen Daten .
3. Die Rolle der Signatur: Gewährleistung der Sicherheit von Schnittstellen und Daten
4. Die Rolle des Tokens: dieselbe wie die PC-Anmeldesitzung, als einziges Ticket für den Benutzerzugang
Zum Beispiel: die Schnittstelle zwischen der App und dem Server und die Schnittstelle zwischen verschiedenen Programmen zwischen Java und PHP. Diese Schnittstellen übertragen Daten im Allgemeinen im JSON-Format
Daher, um die relative Sicherheit zu gewährleisten Sicherheit der Datenübertragung zwischen dem mobilen Endgerät und dem Server, die Schnittstelle muss verschlüsselt sein. Übertragung
1. Designzweck des Tokens:
Da die APP-Seite nicht über den gleichen Sitzungsmechanismus verfügt wie die PC-Seite Es kann nicht festgestellt werden, ob der Benutzer angemeldet ist, und kann den Benutzerstatus nicht aufrechterhalten. Daher ist ein Mechanismus erforderlich, um dies zu erreichen. Dies ist die Rolle des Tokens. Das Token ist das einzige Ticket, mit dem sich der Benutzer anmelden kann Da das von der APP gesendete Token mit dem Server übereinstimmt, kann es beweisen, dass Sie sich angemeldet haben (genau wie wenn Sie ins Kino gehen, müssen Sie eine Eintrittskarte kaufen, halten Sie einfach die Eintrittskarte). Sie können eintreten)
2. Arten des Token-Designs:
(1) Anmeldetyp eines Drittanbieters: Diese Art von Token hat die Form des access_token von WeChat und das Designprinzip basiert auf OAuth2.0. Seine Eigenschaften werden regelmäßig aktualisiert (z Der Zweck besteht darin, dass die Datenquelle, wenn sie einem Drittserver die Anmeldeberechtigung erteilt, deren Gültigkeitsdauer und Berechtigungen kontrollieren muss. Andernfalls kann der Drittserver Benutzer vom Datenquellenserver erhalten Auf unbestimmte Zeit ohne Zustimmung des Benutzers. (2) APP-Selbstnutzungs-Anmeldetyp: Diese Art von Token wird von allgemeinen APPs verwendet, da sie nicht über einen Dritten, sondern direkt über den Benutzer erfolgen Ruft die Daten des Datenquellenservers ab, sodass das Design lockerer ist und nur die Einzigartigkeit seines Tokens sicherstellen muss
3. Implementierungsschritte des APP-Anmeldetokens zur Selbstverwendung:
(1) Fügen Sie hinzu token-Feld und time_out, das Token-Ablaufzeitfeld, in die Datenbankbenutzertabelle (2) Benutzeranmeldung (auch für die automatische Anmeldung während der Registrierung erforderlich) Generieren Sie ein Token und die Ablaufzeit und speichern Sie sie in der Tabelle
( 3) Bevor Sie andere Schnittstellen aufrufen, beurteilen Sie, ob das Token korrekt ist. Wenn es falsch ist, lassen Sie den Benutzer sich erneut anmelden
4 Self-Use-Framework und Logik, hängt hauptsächlich von der Logik ab, kopieren Sie den Code nicht direkt):
(1)//下面是用户登陆时把token插入数据库的代码 $logininfo['token'] = appuser::settoken(); $time_out = strtotime("+7 days"); db::setByPk('u_adver', array('token1' => $logininfo['token'], 'time_out' => $time_out), $logininfo['id']); (2)//下面是生成token方法代码 public static function settoken() { $str = md5(uniqid(md5(microtime(true)),true)); //生成一个不会重复的字符串 $str = sha1($str); //加密 return $str; } (3)//下面是每个接口都必须调用的token验证代码,验证具体实现是在(4) $args['token'] = $_POST['token']; $tokencheck = appuser::checktokens($args['token'], 'u_adver'); if ($tokencheck != 90001) { $res['msg_code'] = $tokencheck; v_json($res); } (4)//token验证方法,db::是数据库操作类,这里设置是token如果七天没被调用则需要重新登陆(也就是说用户7天没有操作APP则需要重新登陆),如果某个接口被调用,则会重新刷新过期时间 public static function checktokens($token, $table) { $res = db::getOneForFields($table, 'time_out', 'token1 = ?', array($token)); if (!empty($res)) { if (time() - $res['time_out'] > 0) { return 90003; //token长时间未使用而过期,需重新登陆 } $new_time_out = time() + 604800;//604800是七天 if (db::setWhere($table, array('time_out' => $new_time_out), 'token1 = ?', array($token))) { return 90001; //token验证成功,time_out刷新成功,可以获取接口信息 } } return 90002; //token错误验证失败 }
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des App-Schnittstellen-Tokens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!