Calling a custom middleware after Authentication Middleware









up vote
2
down vote

favorite












In django REST framework authentication middleware sets the user object in request ONLY after the views middleware is executed while any custom middleware is executed before that. is there someway to change this order and execute custom middleware AFTER user object is set by authentication middleware



As an alternative I create the user object in the middleware itself and it works fine but this is just a hack.



The middlewares as defined in common.py are:



MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'application.middlewares.IPsBlockerMiddlewareHook',
'application.middlewares.UserMiddleware',
]


The custom middleware in question is UserMiddleware. I need it to be executed after authentication but doesnt seems to be the case










share|improve this question









New contributor




anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • i meant custom middleware
    – anubysh
    Nov 9 at 14:52






  • 1




    Please show the UserMiddleware. Since you are using Rest Framework, perhaps that code should go somewhere else, e.g. an authentication class.
    – Alasdair
    Nov 9 at 15:08














up vote
2
down vote

favorite












In django REST framework authentication middleware sets the user object in request ONLY after the views middleware is executed while any custom middleware is executed before that. is there someway to change this order and execute custom middleware AFTER user object is set by authentication middleware



As an alternative I create the user object in the middleware itself and it works fine but this is just a hack.



The middlewares as defined in common.py are:



MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'application.middlewares.IPsBlockerMiddlewareHook',
'application.middlewares.UserMiddleware',
]


The custom middleware in question is UserMiddleware. I need it to be executed after authentication but doesnt seems to be the case










share|improve this question









New contributor




anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



















  • i meant custom middleware
    – anubysh
    Nov 9 at 14:52






  • 1




    Please show the UserMiddleware. Since you are using Rest Framework, perhaps that code should go somewhere else, e.g. an authentication class.
    – Alasdair
    Nov 9 at 15:08












up vote
2
down vote

favorite









up vote
2
down vote

favorite











In django REST framework authentication middleware sets the user object in request ONLY after the views middleware is executed while any custom middleware is executed before that. is there someway to change this order and execute custom middleware AFTER user object is set by authentication middleware



As an alternative I create the user object in the middleware itself and it works fine but this is just a hack.



The middlewares as defined in common.py are:



MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'application.middlewares.IPsBlockerMiddlewareHook',
'application.middlewares.UserMiddleware',
]


The custom middleware in question is UserMiddleware. I need it to be executed after authentication but doesnt seems to be the case










share|improve this question









New contributor




anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











In django REST framework authentication middleware sets the user object in request ONLY after the views middleware is executed while any custom middleware is executed before that. is there someway to change this order and execute custom middleware AFTER user object is set by authentication middleware



As an alternative I create the user object in the middleware itself and it works fine but this is just a hack.



The middlewares as defined in common.py are:



MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'application.middlewares.IPsBlockerMiddlewareHook',
'application.middlewares.UserMiddleware',
]


The custom middleware in question is UserMiddleware. I need it to be executed after authentication but doesnt seems to be the case







django django-rest-framework django-middleware






share|improve this question









New contributor




anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited Nov 9 at 15:09









Alasdair

174k25294303




174k25294303






New contributor




anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked Nov 9 at 13:32









anubysh

113




113




New contributor




anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






anubysh is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











  • i meant custom middleware
    – anubysh
    Nov 9 at 14:52






  • 1




    Please show the UserMiddleware. Since you are using Rest Framework, perhaps that code should go somewhere else, e.g. an authentication class.
    – Alasdair
    Nov 9 at 15:08
















  • i meant custom middleware
    – anubysh
    Nov 9 at 14:52






  • 1




    Please show the UserMiddleware. Since you are using Rest Framework, perhaps that code should go somewhere else, e.g. an authentication class.
    – Alasdair
    Nov 9 at 15:08















i meant custom middleware
– anubysh
Nov 9 at 14:52




i meant custom middleware
– anubysh
Nov 9 at 14:52




1




1




Please show the UserMiddleware. Since you are using Rest Framework, perhaps that code should go somewhere else, e.g. an authentication class.
– Alasdair
Nov 9 at 15:08




Please show the UserMiddleware. Since you are using Rest Framework, perhaps that code should go somewhere else, e.g. an authentication class.
– Alasdair
Nov 9 at 15:08

















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);






anubysh is a new contributor. Be nice, and check out our Code of Conduct.









 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53226670%2fcalling-a-custom-middleware-after-authentication-middleware%23new-answer', 'question_page');

);

Post as a guest



































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes








anubysh is a new contributor. Be nice, and check out our Code of Conduct.









 

draft saved


draft discarded


















anubysh is a new contributor. Be nice, and check out our Code of Conduct.












anubysh is a new contributor. Be nice, and check out our Code of Conduct.











anubysh is a new contributor. Be nice, and check out our Code of Conduct.













 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53226670%2fcalling-a-custom-middleware-after-authentication-middleware%23new-answer', 'question_page');

);

Post as a guest














































































Popular posts from this blog

How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

Syphilis

Darth Vader #20