code

2016年5月23日 星期一

djangorestframework 權限控制


直接下載上次寫的rest,你有其它rest專案也可以直接拿來用
$git clone https://github.com/montanoh/python-djangorestframework-example.git securityRest
$cd securityRest/
$./manage.py syncdb
$./manage.py runserver
此時 http://127.0.0.1:8000/api/, http://127.0.0.1:8000/api/records/ 應該可以正常使用
編輯 myRest/settings.py

因為輸入了中文註解所以在開頭加上 # -*- encoding: utf-8 -*-

在 MIDDLEWARE_CLASSES = ( ... ) 後加上下面這一段,要加上權限管理真正做的事其實只有這一段
REST_FRAMEWORK = {
    # 加上這一段 rest api 都會變成唯讀
    'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'],
    # 加上下面這段,則需要帳號密碼才能存取rest api
    'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAdminUser',],
    # 其它一般設定
    'PAGE_SIZE': 10
}

此時頁面上的api己經不能使用,會出現錯誤訊息,如需存取需用curl,並且需要加上帳號密碼
securityRest$ curl -H 'Accept: application/json; indent=4' -u admin:password123 http://12.0.0.1:8000/api/records/
[
    {

        "id": 1,
        "date": "2016-05-12T07:10:07.954Z",
        "gid": "aaa",
        "tag": "tag1",
        "note": "test",
        "money": 100.0
    }
]

django 內建管理帳號網址 http://127.0.0.1:8000/admin/ 可以增刪管理帳號



使用指令 manage.py createsuperuser 也可以建立帳號
securityRest$ ./manage.py createsuperuser
Username (leave blank to use 'mon'): test
Email address: test@test.com
Password: 
Password (again): 
Superuser created successfully.

沒有留言:

張貼留言

想告訴我什麼都可以留言