diff options
| author | Tom Christie | 2013-01-22 09:11:38 +0000 | 
|---|---|---|
| committer | Tom Christie | 2013-01-22 09:11:38 +0000 | 
| commit | b7ab2aee46c718f683b19eefba1b48f233da40e4 (patch) | |
| tree | 1af09c7dbcc939c749d30adf25b14d232200f44f /docs/api-guide/authentication.md | |
| parent | 65b62d64ec54b528b62a1500b8f6ffe216d45c09 (diff) | |
| parent | e29ba356f054222893655901923811bd9675d4cc (diff) | |
| download | django-rest-framework-b7ab2aee46c718f683b19eefba1b48f233da40e4.tar.bz2 | |
Merge branch 'master' into unauthenticated_response
Conflicts:
	docs/api-guide/authentication.md
Diffstat (limited to 'docs/api-guide/authentication.md')
| -rw-r--r-- | docs/api-guide/authentication.md | 17 | 
1 files changed, 14 insertions, 3 deletions
| diff --git a/docs/api-guide/authentication.md b/docs/api-guide/authentication.md index 59dc4a30..ac690bdc 100644 --- a/docs/api-guide/authentication.md +++ b/docs/api-guide/authentication.md @@ -60,7 +60,7 @@ Or, if you're using the `@api_view` decorator with function based views.      @api_view(['GET'])      @authentication_classes((SessionAuthentication, BasicAuthentication)) -    @permissions_classes((IsAuthenticated,)) +    @permission_classes((IsAuthenticated,))      def example_view(request, format=None):          content = {              'user': unicode(request.user),  # `django.contrib.auth.User` instance. @@ -81,6 +81,15 @@ The kind of response that will be used depends on the authentication scheme.  Al  Note that when a request may successfully authenticate, but still be denied permission to perform the request, in which case a `403 Permission Denied` response will always be used, regardless of the authentication scheme. +## Apache mod_wsgi specific configuration + +Note that if deploying to [Apache using mod_wsgi][mod_wsgi_official], the authorization header is not passed through to a WSGI application by default, as it is assumed that authentication will be handled by Apache, rather than at an application level. + +If you are deploying to Apache, and using any non-session based authentication, you will need to explicitly configure mod_wsgi to pass the required headers through to the application. This can be done by specifying the `WSGIPassAuthorization` directive in the appropriate context and setting it to `'On'`. + +    # this can go in either server config, virtual host, directory or .htaccess  +    WSGIPassAuthorization On +  ---  # API Reference @@ -120,7 +129,7 @@ For clients to authenticate, the token key should be included in the `Authorizat  If successfully authenticated, `TokenAuthentication` provides the following credentials.  * `request.user` will be a Django `User` instance. -* `request.auth` will be a `rest_framework.tokenauth.models.BasicToken` instance. +* `request.auth` will be a `rest_framework.authtoken.models.BasicToken` instance.  Unauthenticated responses that are denied permission will result in an `HTTP 401 Unauthorized` response with an appropriate WWW-Authenticate header.  For example: @@ -168,7 +177,7 @@ If successfully authenticated, `SessionAuthentication` provides the following cr  Unauthenticated responses that are denied permission will result in an `HTTP 403 Forbidden` response. ---- +If you're using an AJAX style API with SessionAuthentication, you'll need to make sure you include a valid CSRF token for any "unsafe" HTTP method calls, such as `PUT`, `POST` or `DELETE` requests.  See the [Django CSRF documentation][csrf-ajax] for more details.  # Custom authentication @@ -192,3 +201,5 @@ If the `.authentication_header()` method is not overridden, the authentication s  [oauth]: http://oauth.net/2/  [permission]: permissions.md  [throttling]: throttling.md +[csrf-ajax]: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax +[mod_wsgi_official]: http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIPassAuthorization | 
