首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将login_required与TokenAuthentication结合使用

如何将login_required与TokenAuthentication结合使用
EN

Stack Overflow用户
提问于 2015-05-06 06:32:49
回答 2查看 2.5K关注 0票数 2

嗨,我正在尝试使用来自Django rest框架的TokenAuthentication

我可以在rest的视图中使用这一点。

代码语言:javascript
复制
#view_rest.py
class CartList(generics.ListCreateAPIView):
    serializer_class = CartSerializer
    filter_class = CartFilter
    permission_classes = (permissions.IsAuthenticated,)
    def create(self, request, *args, **kwargs):
        request.data['user_id'] = request.user.id
        return generics.ListCreateAPIView.create(self, request, *args, **kwargs)

    def get_queryset(self):
        user = self.request.user.id
        return Cart.objects.filter(user_id_id=user)

但在我的自定义视图中它不是身份验证,

代码语言:javascript
复制
#custom_django_views.py
@login_required(login_url='/login/')
def order(request):
    '''Returns page to place order
    '''
    return render(request,"order.html",{})

#this will redirect me to login page.



#settings.py
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'rest_framework.authtoken',
    'myapp',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'site_aggrigator.middleware.SubdomainMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
#rest framework
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'rest_framework.filters.DjangoFilterBackend',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
        'rest_framework.permissions.DjangoObjectPermissions',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    )
}

我不明白为什么对custom_django_views的请求,没有被认证?什么时候进行身份验证?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-09 04:38:07

用例是错误的。Django rest框架不允许这样做。http://www.django-rest-framework.org/topics/ajax-csrf-cors/#javascript-clients

web浏览器应使用会话身份验证。在手机上使用时,也不需要这样做。

Rest框架视图在使用令牌身份验证时负责csrf验证。

票数 1
EN

Stack Overflow用户

发布于 2016-05-03 22:17:44

这对我有用。

代码语言:javascript
复制
from rest_framework.decorators import api_view
@api_view(["GET"])
def your_function(request):
    pass
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30069189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档