Jur*_*ker 1 php authentication api slim
所以我有一个RESTful API,但是我想保持安全,以便不是每个人都能做任何事情。
$app->get('/users' , function(Request $request, Response $response){
$sql = "SELECT * FROM users";
try{
// Get db object
$db = new db();
// Connect
$db = $db->connect();
$stmt = $db->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($users);
} catch(PDOException $e){
echo '{"error": {"text": '.$e->getMessage().'}}';
}
});
Run Code Online (Sandbox Code Playgroud)
所以当我去的时候,http://localhost/API/users我让所有用户进入一个json表。
在我的数据库中,我的数据被存储起来,就像[{"id":"1","username":"werknemer","password":"...","level":"1","name":"piet","surname":"jan","email":"pietjan@gmail.nl"}]
我希望每个人都可以通过我的API来查看自己的表一样level 5。
有解决方案吗?
小智 6
您的示例非常基础,这是在REST API中使用某些“身份验证”概念的起点。
首先,认证:=授权。
拆分这两个概念,第一个将使用户注册并登录到您的应用程序,第二个将使您在此示例中寻找“艰苦的工作”,因此请检查特定用户是否能够执行某些操作东西。
对于身份验证,您可以提供所需的所有方法,但请记住,在REST中,您的应用程序必须是无状态的,并且应提供一个令牌(通过HTTP标头传递),应用程序将使用该令牌来了解用户是否已登录和可以做一些事情。
这就是关键概念:应该使用令牌(请参见JWT或OAUTH)进行授权,而最基本的授权是:“用户记录”。
在您的示例中,您应该使用中间件来过滤http请求,并且如果用户未被授权(登录||没有minLevel:5),则不要进入路由器回调。
签出JWT或OAuth2以获得更多信息。
查看此->(https://github.com/damianopetrungaro/slim-boilerplate),以获取在瘦应用程序中生成JWT的基本示例(如果要使用此样板,请不要使用md5作为哈希密码)是一个非常基本的例子)
| 归档时间: |
|
| 查看次数: |
6435 次 |
| 最近记录: |