集成用户表

假设你有自己的用户表,想利用BaskServer的默认登录机制,实现用户登录

BaskServer利用【SPI】实现用户服务类的扩展。

com.basksoft.core.database.service.user.UserService

接口内容:

import java.util.List;
import java.util.Map;

import com.basksoft.core.database.model.Group;
import com.basksoft.core.database.model.Page;
import com.basksoft.core.database.model.TenantUser;
import com.basksoft.core.database.model.User;

/**
 * 用户服务类接口
 */
public interface UserService {
    ...

    /**
     * 用户密码验证
     * @param account 用户账号
     * @param password 密码
     * @return 用户对象
     */
    User validate(String account, String password);

}

其中validate方法在用户登录的时候调用,这个时候不仅要返回用户对象信息还需要返回用户的团队信息

该逻辑关系是存储在BaskServer的系统表中的,所以我们可以通过一个特殊的方法获取用户对应的团队列表:

List<Tenant> tenants = com.basksoft.core.database.manager.tenant.TenantManager.ins.newQuery.list(String account);

BaskServer中利用【SPI】提供扩展,你可以利用ServiceLoader定义一个UserService的扩展类并配置到系统中。 具体办法:

在项目的resources/META-INF/services下的com.basksoft.core.database.service.user.UserService文件中添加一个扩展类。例如: test.MyUserService

MyUserService的参考实现:

package test;
public class MyUserService extends UserServiceImpl {
    @Override
    public User validate(String account, String password) {
        User user = null;
        try {
            if (StringUtils.isEmpty(account) || StringUtils.isEmpty(password)) {
                throw new BaskException("账号和密码不能为空!<br>Username and Password can not be null.");
            }
            user = this.get(account);
            if (user==null) {
                throw new BaskException( "账号或密码错误!<br>Username or Password is invalid.");
            }
            else if (!password.equals(user.getPassword())) {
                throw new BaskException( "账号或密码错误!<br>Username or Password is invalid.");
            }

            List<Tenant> tenants = com.basksoft.core.database.manager.tenant.TenantManager.ins.newQuery.list(String account);
            user.setTenants(tenants);
        } catch (Exception e) {
            throw new BaskException(e);
        }
        return user;
    }
}

results matching ""

    No results matching ""