구인 공고 웹 사이트: 수퍼유저 만들기




GitHub: https://github.com/Sokhavuth/opine-job
데노 배치: https://khmerweb-job.deno.dev/users

로그인은 일부 금지된 페이지에 들어가기 위해 특정 등록 사용자를 확인하거나 인증하는 프로세스입니다. 결과적으로, 우리는 먼저 이러한 특수 사용자를 데이터베이스에 등록해야 대시보드 또는 기타 금지된 페이지에 로그인하려고 할 때 등록 여부를 데이터베이스에서 확인할 수 있습니다. 그들이 등록되어 있으면 금지 구역에 들어갈 수 있도록 코드를 작성할 수 있습니다. 그렇지 않으면 들어가지 않을 것입니다.

이 목표를 달성하기 전에 MongoDB 데이터베이스에 사용자 컬렉션을 생성하여 수퍼유저 또는 관리자를 등록하여 다른 특수 사용자를 등록하고 대시보드를 제어해야 합니다.

반면에 사용자 암호의 보안을 위해 bcrypt 패키지를 사용하여 사용자 암호를 해시하여 웹 사이트 관리자를 포함하여 아무도 해당 암호를 읽고 이해할 수 없도록 할 수 있습니다. 다음은 해시된 암호의 예입니다. $2a$08$zuHtXr2ITSIHYfLL/kaj9uo7XTZiL/rNJV0jdJB/7HIHFmuSGWb7C.



// controllers/users/login.js

import login from "../../views/users/login.jsx";
import userdb from "../../models/user.ts";


class Login{
    async getForm(req){
        const config = req.mysetting();
        config.page_title = "Login Page";
        config.route = '/users/login';

        userdb.createRootUser(req);

        return await login(config);
    }
}


export default new Login();



// models/users.ts

import { bcrypt } from '../deps.ts';


interface UserSchema {
    _id: ObjectId;
    id: string; 
    title: string;
    content: string;
    thumb: string;
    date: string;
    role: string;
    email: string;
    password: string;
}

class User{
    async createRootUser(req){
        const id = Date.now() + Math.round(Math.random() * 1E9).toString();
        const salt = await bcrypt.genSalt(8);
        const hashPassword = bcrypt.hashSync('xxxxxxxxx', salt);

        let newUser = {
            id: id, 
            title: 'Sokhavuth',
            content: '',
            thumb: '',
            date: '',
            role: 'Admin',
            email: '[email protected]',
            password: hashPassword,
        }

        const users = req.mydb.collection<UserSchema>("users");
        await users.insertOne(newUser);
    }
}


export default new User();

좋은 웹페이지 즐겨찾기