thoka
(Thomas Kalka)
11월 29, 2023, 12:25오전
1
학교 포럼에서 로그인 장벽을 낮추기 위해 다음과 같은 절차를 도입하고 싶습니다:
(주로 비공개인) 포럼으로 메일로 전송되는 링크에는 대상 사용자의 사용자명을 포함해야 합니다(예: forum.my.tld/t/123#user=toka).
로그인하지 않은 사용자가 이 링크를 열면, 버튼을 클릭하여 로그인 링크를 전송하도록 제안하는 페이지가 표시됩니다.
버튼을 클릭하면 로그인 토큰을 포함한 로그인이 사용자에게 전송되어야 하며, 이를 통해 사용자는 추가적인 조작 없이 특정 시간 동안 대상 페이지를 열 수 있어야 합니다. 그렇지 않으면 “로그인 링크 재전송” 버튼이 제공되어야 합니다.
이 기능이 이미 어딘가에 구현되어 있나요?
아니라면: 이를 구현하는 데 사용할 수 있는 어떤 메커니즘이 존재합니까?
2개의 좋아요
pfaffman
(Jay Pfaffman)
11월 29, 2023, 10:32오전
2
thoka
(Thomas Kalka)
11월 29, 2023, 10:03오후
3
다른 시스템은 없습니다.
대부분의 사용자는 이메일로만 포럼을 이용합니다.
1개의 좋아요
sam
(Sam Saffron)
11월 30, 2023, 1:14오전
4
이미 이메일 로그인을 지원합니다:
따라서 이 과정을 자동화하거나 단순화하는 것은 분명히 가능합니다.
5개의 좋아요
thoka
(Thomas Kalka)
11월 30, 2023, 10:21오후
5
네. 이는 포럼에 로그인하는 우리의 주요 방법입니다. 그러나 사용자의 상당수에게는 이 방식이 너무 복잡하게 느껴지는 것 같습니다.
또한, 일부 사용자는 커뮤니케이션 시 서로 다른 이메일 주소를 사용하는 문제도 직면하고 있습니다. 예를 들어, (at)gmail.com과 (at)googlemail.com, 또는 사용자 이름에 점이 추가된 이메일 주소와 그렇지 않은 이메일 주소가 있는 경우입니다. 그들은 한때 종이(네, 죄송합니다. 독일입니다) 등록 양식에 적었던 이메일 주소를 기억하지 못하며, 이러한 문제나 메일 헤더를 확인하여 자신의 "로그인 이메일 주소"를 알아볼 수 있다는 가능성에 대해 무지한 경우가 많습니다.
따라서 저는 사용자에게 전송된 링크를 통해 Discourse 로그인 절차에 대한 추가적인 지식 없이 로그인할 수 있는 방법을 조사하고 있습니다.
1개의 좋아요
sam
(Sam Saffron)
11월 30, 2023, 10:23오후
6
보안상의 위험이 분명히 존재하지만, 이를 수용할 수 있다면 이메일을 통해 로그인할 때 우리가 생성하는 링크를 자동으로 생성하는 자동화 기능은 이미 계정이 있는 사용자들에 한해 충분히 실현 가능합니다.
1개의 좋아요
thoka
(Thomas Kalka)
11월 30, 2023, 10:29오후
7
Sam Saffron:
확실히 보안 위험이 있습니다
음. 저는 제 제안에서 이 문제를 우회하려고 했습니다.
직접 사용자를 로그인 상태로 만드는 링크가 위험하다는 점은 이해합니다.
하지만 제안된 메커니즘에서는 제가 볼 수 있는 유일한 위험은 원치 않는 로그인 링크가 사용자에게 전송되는 것뿐입니다.
1개의 좋아요
thoka
(Thomas Kalka)
4월 8, 2024, 7:34오전
8
첫 번째로 작동하는 구현체를 만들었습니다:
Make login easier for new users.
이제 알림 내의 모든 discourse 링크에 사용자 정보를 추가하는 방법을 배우고 있습니다.
2개의 좋아요
thoka
(Thomas Kalka)
5월 28, 2024, 9:35오전
9
이 기능은 이제 구현되었습니다.
요약
이메일 로그인 프로세스 간소화
레포지토리 링크
https://github.com/thoka/discourse-login-helper/
설치 가이드
Discourse에 플러그인 설치하는 방법
기능
이 Discourse 플러그인은 초보자 및 대량 구독 사용자의 로그인 프로세스를 단순화하려는 시도입니다.
알림 이메일에 포함된 포럼 링크에는 사용자의 이메일 주식이 추가됩니다.
사용자가 이러한 링크 중 하나를 클릭하면 추가 상호작용 없이 로그인 이메일이 전송됩니다.
거기서 제공된 로그인 링크를 사용한 후, 사용자는 이전에 링크된 주제로 리디렉션됩니다.
변경 이력
0.6: “login” 파라미터가 설정된 경우 모든 페이지에서 로그인 링크 전송
0.5: 비-ASCII 사용자명을 가진 사용자에게 링크가 포함된 이메일을 보내지 못하게 하는 버그 수정
할…
로그인 후 destination_url로 리디렉션하기 위해 다음과 같은 코어 메서드를 오버라이드하지 않아도 되는 방법을 문의할 적절한 곳은 어디일까요?
EmailLoginController.reopen({
actions: {
finishLogin() {
let data = {
second_factor_method: this.secondFactorMethod,
timezone: moment.tz.guess(),
};
if (this.securityKeyCredential) {
data.second_factor_token = this.securityKeyCredential;
} else {
data.second_factor_token = this.secondFactorToken;
}
ajax({
url: `/session/email-login/${this.model.token}`,
type: "POST",
data,
})
.then((result) => {
if (result.success) {
This file has been truncated. show original
그리고
module SessionControllerExtension
def email_login
# puts "🔵 email_login params: #{params.to_json}"
token = params[:token]
matched_token = EmailToken.confirmable(token, scope: EmailToken.scopes[:email_login])
user = matched_token&.user
check_local_login_allowed(user: user, check_login_via_email: true)
rate_limit_second_factor!(user)
if user.present? && !authenticate_second_factor(user).ok
return render(json: @second_factor_failure_payload)
end
if user = EmailToken.confirm(token, scope: EmailToken.scopes[:email_login])
if login_not_approved_for?(user)
return render json: login_not_approved
elsif payload = login_error_check(user)
return render json: payload
This file has been truncated. show original
?
1개의 좋아요