簡體   English   中英

Angular 基於角色的登錄

[英]role based login in Angular

角色是員工和管理員。 我已經創建了生成令牌的 api,現在我想在登錄時添加角色意味着如果員工登錄,他應該被定向到相應的頁面,而管理員應該被定向到相應的頁面。 我已經為角色創建了單獨的表,現在我想知道這些事情是如何工作的,以及如何使用登錄憑據添加角色。為了登錄,我正在使用一個相互列的internal_id加入帶有角色的注冊表。 在此處輸入圖片說明

這是員工表在此處輸入圖片說明

這是我在 nodejs 中創建的 API。

 login: (req, res ) =>{
    const body = req.body;
    getUserByUserEmail(body.email, (err, results) => {
        if(err) {
            console.log(err);
        }
        if(!results) {
            return res.json({
                success : 0 ,
                message : "Invalid Email or Password"
            });
        }

        const result = compareSync( body.password, results[0].password);
        if (result) {
            results.password = undefined;
            const jsontoken = sign({ result: results }, "qwe123", {expiresIn : "3h"});
            return res.json({
                success : 1 ,
                message : "Login Succesfully!",
                token : jsontoken
            });
        }
        else{
            return res.json({
                success : 0 ,
                message : "Invalid Email or Password"
            });
        }
    });

 }

這是我如何從員工表中獲取電子郵件和密碼的代碼。

getUserByUserEmail  : (email , callBack) =>{
    pool.query(
        `select * from employee where email = ? `,
        [email],
        (error, results, fields) => {
            if(error){
               
                return callBack(error);
            }
            return callBack(null, results);
        }
    )
}

出於安全考慮,我建議您的 SQL 查詢select * from employee where email = ? 具體,只檢索您需要的信息,例如: select internal_id, password from employee where email = ?

關於您的角色映射:我不會為您提供代碼。 但是使用您在身份驗證時檢索到的存儲的internal_id ,添加一個類似getRoleByUserID的函數,您可以select role from roles where internal_id = ?, [stored_id_from_auth_query]搜索select role from roles where internal_id = ?, [stored_id_from_auth_query] 然后運行 ​​case 或 if/else 語句以根據返回的角色生成您的視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM