I found django's auth module is too complex for my needs, instead I wrote a relative simple one, but I miss the login_required decorator in django auth module, so I decide to write a new one.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #the decorator
def myuser_login_required(f):
def wrap(request, *args, **kwargs):
#this check the session if userid key exist, if not it will redirect to login page
if 'userid' not in request.session.keys():
return HttpResponseRedirect("/mysite/login")
return f(request, *args, **kwargs)
wrap.__doc__=f.__doc__
wrap.__name__=f.__name__
return wrap
#how you use this decorator is simple, same as the @login_required decorator
@myuser_login_required
def myuser_create(request):
#blahblah here's how you create your user....
#and you can make sure your user already logined.
#remember to register session id in your login function
#this is just a naive sample
import md5
def my_login(request):
if request.POST:
try:
m = myuser.objects.filter(userid__exact=request.POST['userid'])
if str(m.get().password) == md5.md5(request.POST["password"]).hexdigest():
request.session['userid'] = str(m.get().userid)
else:
raise
except:
return HttpResponseRedirect("/mysite/login")
|
I didn't find an elegent way to extends the auth module and the login_required decorator, so instead, I write my simple one. The way how I redirect the web page is naive but it already fits my need.
Tags: web
Please use 4 spaces for indentation.
Thanks.........