简体   繁体   English

使用Restler对不同的类进行不同的身份验证

[英]Different authentication for different classes using Restler

I'm trying to build a REST api(using Restler) which takes in username and password for login and generates a session key. 我正在尝试构建一个REST api(使用Restler),该api需要输入用户名和密码进行登录并生成会话密钥。 Once sessionkey is generated, user will be able to pass this session key to access other classes in the api. 生成会话密钥后,用户将能够传递此会话密钥来访问api中的其他类。 Is it possible to get the name of the class that invokes __isAuthenticated function? 是否可以获取调用__isAuthenticated函数的类的名称?

My Auth Class: 我的认证课程:

<?php
class Auth implements iAuthenticate
{
    public static $sessionKey;
    public static $currentUser;
    public $tempsesskey;

    function __isAuthenticated ()
    {
        if (isset($_GET['useremail']) && isset($_GET['userpass'])) {
            $user = $_GET['useremail'];
            $pass = $_GET['userpass'];
            $user = mysql_real_escape_string($user);
            $pass = mysql_real_escape_string($pass);
            mysql_query(
            "UPDATE `userdetail` SET lastlogin=NOW()
            WHERE useremail='$user' AND userpass=md5('$pass')");
            if (mysql_affected_rows() > 0) {
                $result = mysql_query(
                "SELECT sessionkey from usersession where TIMESTAMPDIFF(MINUTE,lastactivity,now()) < 20 and useremail='$user'");
                while ($row = mysql_fetch_assoc($result)) {
                    $tempsesskey = $row['sessionkey'];
                }
                if (strlen($tempsesskey) > 0) {
                    mysql_query(
                    "UPDATE usersession set lastactivity=now() where sessionkey='$tempsesskey'");
                } else {
                    $tempsesskey = generateKey(52);
                    mysql_query(
                    "UPDATE `usersession` set sessionkey='$tempsesskey',keyvalid='Y' where useremail='$user'");
                }
                self::$currentUser = $user;
                self::$sessionKey = $tempsesskey;
                return TRUE;
            }
        } else 
            if (isset($_GET['sessionkey'])) {
                $sesskey = $_GET['sessionkey'];
                $sesskey = mysql_real_escape_string($sesskey);
                $result = mysql_query(
                "SELECT sessionkey from usersession where sessionkey='$sesskey' and TIMESTAMPDIFF(MINUTE,lastactivity,now()) < 20");
                if (mysql_affected_rows() > 0) {
                    while ($row = mysql_fetch_assoc($result)) {
                        $tempsesskey = $row['sessionkey'];
                        self::$sessionKey = $tempsesskey;
                    }
                    return TRUE;
                }
            }
    }
}

There is a simple way of setting the property on the Authentication class by adding custom php doc comment /annotation which is explained in Authentication with ACL. 通过添加自定义php doc注释/注释,有一种在Authentication类上设置属性的简单方法,这在Authentication with ACL中进行了说明。 You can use the same technique for your purpose as well 您也可以使用相同的技术来达到目的

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM