[英]Testing User Login in Django using Selenium
在Django / Selenium中,您是否需要始終以字符串形式輸入用戶名和密碼 ,因為當您從用戶處調用密碼時,它會輸出一個哈希密碼,然后,如果Selenium將其輸入到窗口中,則將不允許您使用哈希密碼?
我的代碼的工作原理是:
def test_admin_login(self):
# users types in username and passwords and presses enter
self.browser.get(self.live_server_url + '/admin/')
username_field = self.browser.find_element_by_name('username')
username_field.send_keys('admin')
password_field = self.browser.find_element_by_name('password')
password_field.send_keys('1234')
password_field.send_keys(Keys.RETURN)
# login credentials are correct, and the user is redirected to the main admin page
body = self.browser.find_element_by_tag_name('body')
self.assertIn('Site administration', body.text)
但是,如果我將“ admin”切換為
admin = User.objects.get(username="admin")
並按如下所示調用管理員密碼:
password_field.send_keys(admin.password)
它將哈希密碼輸入瀏覽器,並且不允許我登錄。
還有其他方法可以使用密碼字符串嗎?
謝謝亞倫
如果使用測試數據庫,請為需要的用戶創建設置密碼。
def login_as(self, browser, user):
# change password
password = 'q'
user.set_password(password)
user.save()
browser.get(self.live_server_url + '/admin/')
username_field = browser.find_element_by_css_selector('form input[name="username"]')
password_field = browser.find_element_by_css_selector('form input[name="password"]')
username_field.send_keys(user.username)
password_field.send_keys(password)
submit = browser.find_element_by_css_selector('form input[type="submit"]')
submit.click()
在我看來,您的問題的答案很可能是否。原因是您永遠不希望在不對哈希進行哈希處理(理想情況下也對其加鹽)的情況下以純文本形式存儲密碼。 不過,可以將Django配置為在將密碼存儲到數據庫之前不對您的密碼進行哈希處理。 如果不對它進行哈希處理,則可以執行所需操作:
admin = User.objects.get(username="admin")
password_field.send_keys(admin.password)
我不會推薦這個。 另外,您也無法在登錄頁面中使用密碼的哈希版本進行登錄,因為Django身份驗證后端將哈希已輸入的哈希值,並且將不匹配。
這有意義嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.