2013-07-13 2 views
0

Я новичок в python и только начал учиться, я хочу создать простой скрипт для запуска программы путем аутентификации пользователя, действительный или нет ... Основная проблема, я столкнулся что у меня есть файл «пользователи», в котором я упомянул всех действительных пользователей, , поэтому мне нужна программа, которая ищет входные данные, данные пользователем в файле «users», если они будут найдены, а затем продолжить в противном случае «аутентификация не удалась» , что я пробовал. ..скрипт аутентификации пользователя для запуска программы с использованием python

Fp = открыт ("пользователи", "R")

для линии в fp.readlines():

if "michel" in line : # user michel is available in users file 
    print "true" 
else : 
    print "false" 

это работает, печатает «true», потому что michel находится в файле .., но в случае, когда пользователь вводит «mic» .. также печатает true ...... так что будет решением ...

ответ

0

Вы можете использовать повторно, чтобы убедиться, что все линии является матч:

import re 

    fp = open("users", "r") 
    for line in fp.readlines(): 
     if re.match('^michel$', line, re.I): 
      print "true" 
     else : 
      print "false" 
1

Для начала лучше всего использовать os.getlogin() для определения имени пользователя, а не для запроса имени пользователя. Это, по крайней мере, гарантирует, что пользователь зарегистрировался через какой-либо механизм аутентификации, чтобы получить доступ к системе, а это значит, что у них есть знакомое имя пользователя .

Так что если вы хотите, чтобы превратить это в функцию можно было бы написать:

def is_valid_user(username): 
    fp = open("users", "r") 
    for line in fp.readlines(): 
     if username in line: 
     fp.close() 
     return True 
    fp.close() 
    return False 

Затем можно вызвать функцию с помощью:

import os 
is_valid = is_valid_user(os.getlogin()) 
if is_valid: 
    print("valid user") 
else: 
    print("invalid user") 

Некоторые предложения для дополнительной безопасности в настоящее время и в будущем :

  1. Изменить файл "users", чтобы содержать имена, окруженные разделителями, такими как ": jonesj:" чем «jonesj» и поиск ":" + username + ":" in line, который позволит избежать ложных срабатываний в ситуациях, когда пользователь «jones» в настоящее время зарегистрирован, а имя пользователя «jonesj» находится в вашем «пользовательском» файле, но «jones» - нет, и вы неправильно идентифицируете " jones "как авторизованный пользователь (поскольку« jones »является подмножеством строки« jonesj »).
  2. Убедитесь, что разрешения на ваш «пользовательский» файл установлены только для чтения, чтобы пользователи не могли добавлять свое имя пользователя в файл, чтобы предоставлять разрешения для себя.
  3. Когда-нибудь в будущем вы можете захотеть использовать сервер LDAP или Kerberos или какой-либо другой механизм формальной аутентификации, а не файл «users». Существуют хорошие клиентские библиотеки python для целого ряда серверных серверов аутентификации.
Смежные вопросы