# 身份认证
身份认证主要用于 客户端/服务器 架构,客户端通过简单的 API 来安全的操作数据库。
身份认证支持两种方式:
- Account / Password
- Token
# Account / Password 方式
# 客户端使用
在SqlessRequest
对象中,设置 AccessParams
属性
var uid = "uid123";
var password = "Wpf";
var request = new SqlessSelectRequest()
{
AccessParams = new string[] { uid, password },
Table = 'User'
};
// ...
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# Api 配置
在SqlessAccess
对象中设置以下字段:
字段 | 说明 |
---|---|
AccessTable | 用户信息表名 |
UidField | 用户信息表中的 Uid 字段 |
AccessAccountField | 用户信息表账号字段 |
AccessPasswordField | 用户信息表密码字段 |
SqlConStr | 数据库连接字符串 |
public static SqlessAccess PasswordAccessConfig => new SqlessAccessPassword()
{
UidField = "Uid",
SqlConStr = SqlConStr,
AccessTable = Tables.User,
AccessAccountField = "Uid",
AccessPasswordField = "Password"
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 在 Api 使用
使用配置创建的 SqlessAccess 对象获取 Uid
var uid = await PasswordAccessConfig.GetUid("AccessTestUid", "123456");
1
配合客户端传来的 SqlessRequest
private SqlessConfig GetOwnerAccessConfig(string authUid)
{
var result = SqlessConfig.GetOwnerConfig(SqlConStr, authUid);
result.AuthUid = authUid;
// 其他配置 ...
return result;
}
// 根据 SqlessRequest 创建 Sqless 实例
private async Task<Sqless> GetSqless(SqlessRequest request)
{
var uid = await PasswordAccessConfig.GetUid(request.AccessParams);
return new Sqless(GetOwnerAccessConfig(uid));
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Token 方式
# 客户端使用
在SqlessRequest
对象中,设置 AccessParams
属性
var token = "token123";
var request = new SqlessSelectRequest()
{
AccessParams = new string[] { token },
Table = 'User'
};
// ...
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
也可根据不同平台,获取不同 Token
var token = "token123";
var platform = "Wpf";
var request = new SqlessSelectRequest()
{
AccessParams = new string[] { token, platform },
Table = 'User'
};
// ...
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# Api 配置
在SqlessAccess
对象中设置以下字段:
字段 | 说明 |
---|---|
AccessTable | Token 表名 |
UidField | Token 表中的 Uid 字段 |
AccessTokenField | Token 表 Token 字段 |
AccessTokenTypeField | Token 表 Token 类型字段,如平台标识 |
SqlConStr | 数据库连接字符串 |
public static SqlessAccess TokenAccessConfig => new SqlessAccessToken()
{
UidField = "Uid",
SqlConStr = SqlConStr,
AccessTable = Tables.User,
AccessTokenField = "Uid",
AccessTokenTypeField = "Password"
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 在 Api 使用
使用配置创建的 SqlessAccess 对象获取 Uid
var uid = await TokenAccessConfig.GetUid("AccessTestToken");
1
也可根据不同平台来获取
var uid = await TokenAccessConfig.GetUid("AccessTestToken","Wpf");
1
配合客户端传来的SqlessRequest
private SqlessConfig GetOwnerAccessConfig(string authUid)
{
var result = SqlessConfig.GetOwnerConfig(SqlConStr, authUid);
result.AuthUid = authUid;
// 其他配置 ...
return result;
}
// 根据 SqlessRequest 创建 Sqless 实例
private async Task<Sqless> GetSqless(SqlessRequest request)
{
var uid = await TokenAccessConfig.GetUid(request.AccessParams);
return new Sqless(GetOwnerAccessConfig(uid));
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 身份认证前提
前面所说的两种方式,都是建立在已有用户信息或 Token 的前提下。换言之,Sqless 的权限系统,需相关信息已存在于数据库中。
因此。用户管理、Token 管理这些敏感操作,需要单独写 Api 来实现。
← 权限配置