jumpserver 添加二次驗(yàn)證

互金公司為了應(yīng)付三級(jí)等保,給jumpserver添加二次短信驗(yàn)證碼

后端代碼:

@defend_attack

def Sendmessage(request):

? ? # phonenumber= request.POST.get('phone')

? ? username=request.POST.get('username')

? ? phonenumber=get_object(User, username=username).phone

? ? verifyCode = str(random.randint(100000, 999999))

? ? conn = redis.StrictRedis(host=redis_host, password=redis_pass, port=redis_port)

? ? pipe = conn.pipeline()

? ? pipe.set("phone%s" % phonenumber, verifyCode)

? ? pipe.expire("phone%s" % phonenumber, 60)

? ? pipe.execute()

? ? print verifyCode

? ? #這里調(diào)用你的短信api

? ? data = {'message': '短信已發(fā)送'}

? ? return HttpResponse(json.dumps(data), content_type='application/json')

@defend_attack

def Login(request):

? ? """登錄界面"""

? ? error = ''

? ? conn = redis.StrictRedis(host=redis_host, password=redis_pass, port=redis_port)

? ? if request.user.is_authenticated():

? ? ? ? return HttpResponseRedirect(reverse('index'))

? ? if request.method == 'GET':

? ? ? ? return render_to_response('login.html')

? ? else:

? ? ? ? username = request.POST.get('username')

? ? ? ? password = request.POST.get('password')

? ? ? ? phonenumber = get_object(User, username=username).phone

? ? ? ? smscode = request.POST.get('smscode')

? ? ? ? phoneinredis=conn.get("phone%s" % phonenumber)

? ? ? ? print "phone%s" % phonenumber

? ? ? ? print smscode

? ? ? ? print phoneinredis

? ? ? ? if username and password and smscode==phoneinredis:

? ? ? ? ? ? user = authenticate(username=username, password=password)

? ? ? ? ? ? if user is not None:

? ? ? ? ? ? ? ? if user.is_active:

? ? ? ? ? ? ? ? ? ? login(request, user)

? ? ? ? ? ? ? ? ? ? # c = {}

? ? ? ? ? ? ? ? ? ? # c.update(csrf(request))

? ? ? ? ? ? ? ? ? ? # request.session['csrf_token'] = str(c.get('csrf_token'))

? ? ? ? # user_filter = User.objects.filter(username=username)

? ? ? ? # if user_filter:

? ? ? ? #? ? user = user_filter[0]

? ? ? ? #? ? if PyCrypt.md5_crypt(password) == user.password:

? ? ? ? #? ? ? ? request.session['user_id'] = user.id

? ? ? ? #? ? ? ? user_filter.update(last_login=datetime.datetime.now())

? ? ? ? ? ? ? ? ? ? if user.role == 'SU':

? ? ? ? ? ? ? ? ? ? ? ? request.session['role_id'] = 2

? ? ? ? ? ? ? ? ? ? elif user.role == 'GA':

? ? ? ? ? ? ? ? ? ? ? ? request.session['role_id'] = 1

? ? ? ? ? ? ? ? ? ? else:

? ? ? ? ? ? ? ? ? ? ? ? request.session['role_id'] = 0

? ? ? ? ? ? ? ? ? ? return HttpResponseRedirect(request.session.get('pre_url', '/'))

? ? ? ? ? ? ? ? # response.set_cookie('username', username, expires=604800)

? ? ? ? ? ? ? ? # response.set_cookie('seed', PyCrypt.md5_crypt(password), expires=604800)

? ? ? ? ? ? ? ? # return response

? ? ? ? ? ? ? ? else:

? ? ? ? ? ? ? ? ? ? error = '用戶未激活'

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? error = '用戶名或密碼錯(cuò)誤'

? ? ? ? else:

? ? ? ? ? ? error = '用戶名或密碼錯(cuò)誤'

? ? return render_to_response('login.html', {'error': error})



前端代碼:

var countdown=60;

function sendemail(){

? ? var obj = $("#btn");

? ? settime(obj);

? ? $.ajax({

? ? ? ? ? ? ? ? url:"/Sendmessage/",

? ? ? ? ? ? ? ? type:"POST",

? ? ? ? ? ? ? ? dataType:"json",

? ? ? ? ? ? ? ? data:{

? ? ? ? ? ? ? ? ? ? username:$('#username').val()

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? success:function(data){

alert(data["message"])

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? error:function() {

? ? ? ? ? ? ? ? alert("error13")

? ? ? ? ? ? ? ? }

? ? ? ? ? ? });

? ? }

function settime(obj) { //發(fā)送驗(yàn)證碼倒計(jì)時(shí)

? ? if (countdown == 0) {

? ? ? ? obj.attr('disabled',false);

? ? ? ? //obj.removeattr("disabled");

? ? ? ? obj.val("免費(fèi)獲取驗(yàn)證碼");

? ? ? ? countdown = 60;

? ? ? ? return;

? ? } else {

? ? ? ? obj.attr('disabled',true);

? ? ? ? obj.val("重新發(fā)送(" + countdown + ")");

? ? ? ? countdown--;

? ? }

setTimeout(function() {

? ? settime(obj) }

? ? ,1000)

}

效果:


jumpserver 二次開(kāi)發(fā)qq群 391096485

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • =========================================================...
    _燈火闌珊處閱讀 2,545評(píng)論 0 3
  • 英文文檔,一開(kāi)始我也是抗拒的,邊翻譯邊看,也就花費(fèi)了1個(gè)小時(shí)基本就閱讀過(guò)了,我的英文基礎(chǔ)其實(shí)很差。附上鏈接:鏈接:...
    lonecolonel閱讀 10,433評(píng)論 3 1
  • iOS開(kāi)發(fā)系列--網(wǎng)絡(luò)開(kāi)發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開(kāi)發(fā),例如說(shuō)新浪微博、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 4,060評(píng)論 2 7
  • 我們可以借助插件來(lái)做 打開(kāi)插件,找到自己需要的驗(yàn)證碼 篩選有用的路徑 把對(duì)應(yīng)的視圖函數(shù)也拿過(guò)來(lái),注意還需要一個(gè)ge...
    程序員之路閱讀 1,429評(píng)論 0 1
  • 轉(zhuǎn)載,覺(jué)得這篇寫(xiě) SQLAlchemy Core,寫(xiě)得非常不錯(cuò)。不過(guò)后續(xù)他沒(méi)寫(xiě)SQLAlchemy ORM... ...
    非夢(mèng)nj閱讀 5,607評(píng)論 1 14

友情鏈接更多精彩內(nèi)容