Как уже упоминалось, процедуры входа в систему различаются в зависимости от реализации, но в базовом случае (простая аутентификация веб-приложения) используется что-то вроде следующего псевдокода:
function login(username, password) {
user = db->get_user(username)
if (user == false) {
report_error("Unknown username")
exit
}
if (user->password != hash(password)) {
report_error("Incorrect password")
exit
}
// User authenticated, set session cookie
session->set_data('current_user', user->username)
}
Конечно, в большинстве случаев это немного больше, чем это, но каждая функция входа в систему начинает свою жизнь, по сути, как описано выше. Теперь, если мы добавим в смесь автологин («помни меня»), мы получим что-то вроде этого:
function login(username, password, remember_me) {
user = db->get_user(username)
if (user == false) {
report_error("Unknown username")
exit
}
if (user->password != hash(password)) {
report_error("Incorrect password")
exit
}
// User authenticated, set session cookie
session->set_data('current_user', user->username)
if (remember_me == true) {
cookie_token = random_string(50)
set_cookie('autologin_cookie', cookie_token, ONE_MONTH)
// Finally, save a hash of the random token in the user table
db->update_user(user, 'autologin_token', hash(cookie_token))
}
}
Плюс функция автоматического входа в систему при наличии файла cookie:
function cookie_login() {
cookie = get_cookie('autologin_cookie')
if (cookie == false) {
return false
}
// Only for demonstration; cookie should always include username as well
user = db->get_user_by_cookie(cookie)
if (user == false) {
// Corrupt cookie data or deleted user
return false
}
// User authenticated, set session cookie
session->set_data('current_user', user->username)
return true
}
ПРИМЕЧАНИЕ: Вышеуказанный подход не является «наилучшей практикой» и не очень безопасен. В рабочем коде вы всегда включаете идентификатор пользователя в данные cookie, используете несколько уровней регулирования, сохраняете данные при неудачных и успешных входах в систему и т. Д. Все это было удалено, чтобы упростить базовую структуру аутентификации.
В любом случае, я надеюсь, что это то, что вы искали, колдфыр. Я не знаю вашего происхождения, но если вы не уверены в том, как работают сессии и куки , вам следует прочитать их отдельно, а если вам нужны более сложные детали, просто спрашивайте.
P.S .: Вы также можете проверить вопрос " Полное руководство по аутентификации веб-сайта ", чтобы узнать о передовых методах