LINUX.ORG.RU

Django авторизация на мобильном приложении через RESTful

 , ,


0

1

Всем привет, хочу сделать авторизацию для мобильного приложения, чтобы пользователь мог зайти под своим аккаунтом и прочитать сообщения например, написать сообщение другому пользователю итд. Как лучше сделать? нагуглил фреймворк Django REST framework, и OAuth2 Toolkit, сделал через OAuth и вручную, вручную выглядит как-то так:

def login (request):
    response_data = {}
    key = request.POST.get("key")

    if (key != API_ACCESS_KEY):
        response_data["result"]     = "error"
        response_data["error_code"] = "G1";
        response_data["message"]    = "Invalid application secret key!"

        return HttpResponse (json.dumps (response_data), content_type = "application/json")

    user = authenticate (username = request.POST.get("email"), password = request.POST.get("password"))

    if user is not None:
        response_data["result"]      = "ok"
        response_data["passwd_hash"] = user.password
    else:
        response_data["result"]  = "error"
        response_data["error"]   = "L1";
        response_data["message"] = "Invalid email or password!"

    return HttpResponse (json.dumps (response_data), content_type = "application/json")

Но возвращать хэш пароля может не самая лучшая идея, поэтому думал туда лучше session id.
Какой способ лучше использовать, через OAuth2 или вручную? может вручную не безопасно? или можно сделать чтобы было безопасно, но при этом не слишком мудрено?

★★★

return HttpResponse (json.dumps (response_data), content_type = «application/json»)

Есть JsonResponse, а по сабжу ничего не скажу, ибо ни разу авторизацию не делал.

FIL ★★★★
()
Последнее исправление: FIL (всего исправлений: 1)

Но возвращать хэш пароля может не самая лучшая идея, поэтому думал туда лучше session id.

Возвращать куда и зачем?

FIL ★★★★
()
Ответ на: комментарий от FIL

Возвращать приложению через json, я на предприятии делал мобильное приложение, так через Basic Auth авторизация, после успешной авторизации давался Access Token который истекает через какое-то время, и его нужно обновлять. Но там это через заголовки все сделано.

Int64 ★★★
() автор топика

Размышления вслух

Рест нужен чтобы НЕ ИСПОЛЬЗОВАТЬ СЕССИИ. А сессии нужно не использовать для повышения быстродействия. Я недавно лично наткнулся на то что следующий запрос с включенной сессией выполняется только после завершения предыдущего.

Jaberwock ★★★
()
Ответ на: Размышления вслух от Jaberwock

да я еще нагуглил что это не очень безопасно, решил использовать OAuth2.0 тем более что на нем уже все работает.

Int64 ★★★
() автор топика

if user is not None:

А почему не

if user:
?
И не стоит ли сначала всё-таки прочитать мануал по джанге, а потом уже браться за ответственную работу?

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)
if (key != API_ACCESS_KEY):

Стоять! у тебя что API_ACCESS_KEY один на всех?! ай не верно это.

ggrn ★★★★★
()
Ответ на: комментарий от ggrn

А как верно? сейчас сделал OAuth авторизацию, там дается access_token на время, но как лучше защитить методы которые не требуют авторизацию, к примеру регистрация пользователя?

Int64 ★★★
() автор топика
Ответ на: комментарий от Int64

Ну ты хотя бы в учебнике по питону первые пару глав прочитай
И хотя бы туториал джанги весь пройди

Goury ★★★★★
()
Ответ на: комментарий от Goury

И не стоит ли сначала всё-таки прочитать мануал по джанге, а потом уже браться за ответственную работу?

Нефиг делать, х-к х-к и в продакшен, потом разберемся.

ggrn ★★★★★
()
Ответ на: комментарий от ggrn

А ну и ещё всё же гоняется по https же да?

да

Нефиг делать, х-к х-к и в продакшен, потом разберемся.

Просто мне сделали предложение, от которого я не смог отказаться )) Да и приложение легкое очень, так что норм )

Int64 ★★★
() автор топика
Последнее исправление: Int64 (всего исправлений: 1)
Ответ на: комментарий от Int64

Надо было переаутсорсить предложение и взять себе менеджерский откат

Goury ★★★★★
()
Ответ на: комментарий от Int64

Просто мне сделали предложение, от которого я не смог отказаться )) Да и приложение легкое очень, так что норм )

Все верно иначе опыта не наберешься.

ggrn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.