【问题标题】:Android-Django user authentication-1Android-Django 用户认证-1
【发布时间】:2012-03-24 16:12:29
【问题描述】:

我试图在我的 django 模型 AddRec 中将用户称为外键(在前端有 android) 在 django 这边我有这个代码,

这是 django 模型,

class AddRec(models.Model):
     user=models.ForeignKey(User)
     about=models.CharField(User)
     created = models.DateTimeField(auto_now_add=True)

class AddRecForm(ModelForm):
class Meta: 
    model=AddRec

@login_required 
def add_record(request):
    if request.method=='POST':
        if not request.user.is_authenticated(): # if user is not logged in
            response_data=[{"success": "0"}]
            return HttpResponse(simplejson.dumps(response_data),mimetype='application/json')
    current_user=request.User
    description=request.POST['about']
    new_rec = AddRec(user=current_user,about=description)
    new_rec.save()
    response_data=[{"success": "1"}]
    return HttpResponse(simplejson.dumps(response_data), mimetype='application/json')
    else:
        response_data=[{"success": "0"}]
        return HttpResponse(simplejson.dumps(response_data),mimetype='application/json')

当我使用 Android 作为后端执行上面的代码时,它给了我错误“致命异常”。 主要是我无法访问用户在 django 中从 Android 发送的请求。

在 Android 端,我只是用

发送数据
nameValuePairs.add(new BasicNameValuePair("about", "123"));  

并且使用 httppost 我正在发送数据。 即使用户已经登录,是否需要从Android端发送用户名?

【问题讨论】:

标签: android django django-authentication


【解决方案1】:

您使用的身份验证将会话密钥存储在客户端 (android) 的 cookie 中。你在用HttpClient吗?如果是这样,您必须使用 cookie。

此外,api 应该是无状态的。您不应该让用户使用 api 的 cookie 登录。 http://en.wikipedia.org/wiki/Representational_state_transfer 有几个流行的 api 身份验证方案可以解决这个问题。

您是否在请求中发送 csrf 令牌?如果没有,您可以使用装饰器为您的视图显式禁用 csrf 保护。 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt(不推荐)

发布问题时,请发布错误日志、回溯,基本上是您在出现问题时看到的所有内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多