文章内容

2019/8/12 15:07:25,作 者: 黄兵

Metronic v6.0.1 Angular 用户注册模块解析

在Metronic v6.0.1中,用户注册主要是在:src/app/core/auth/_services/auth.service.fake.ts这个模块中实现的。

下面我们看看如何实现的:

首先是定义了三个URI:

const API_USERS_URL = 'api/users';
const API_PERMISSION_URL = 'api/permissions';
const API_ROLES_URL = 'api/roles';

这三个URI在后面会被调用。

之后用户登陆调用部分:

// Authentication/Authorization
    login(email: string, password: string): Observable {
        if (!email || !password) {
            return of(null);
        }

        return  this.getAllUsers().pipe(
            map((result: User[]) => {
                if (result.length <= 0) {
                    return null;
                }

                const user = find(result, function(item: User) {
                    return (item.email.toLowerCase() === email.toLowerCase() && item.password === password);
                });

                if (!user) {
                    return null;
                }

                user.password = undefined;
                return user;
            })
        );

    }

最主要验证部分在这里:

const user = find(result, function(item: User) {
        return (item.email.toLowerCase() === email.toLowerCase() && item.password === password);
    });

用户名和密码转换成小写,判断是否相等。之后返回user相关数据。

getUserByToken(): Observable {
    const userToken = localStorage.getItem(environment.authTokenKey);
    if (!userToken) {
        return of(null);
    }

    return this.getAllUsers().pipe(
        map((result: User[]) => {
            if (result.length <= 0) {
                return null;
            }

            const user = find(result, function(item: User) {
                return (item.accessToken === userToken.toString());
            });

            if (!user) {
                return null;
            }

            user.password = undefined;
            return user;
        })
    );
}

这里根据Token判断用户。主要是读取localStorage的相关内容。

更多具体源代码,可以查看源文件。

分享到:

发表评论

评论列表