自带授权

用前必看

如果存在ABP、Furion等框架或者你本身就有JWT逻辑,不要使用自带授权

JWT一个项目只能注册一个

可以看集成JWT: https://www.donet5.com/Doc/32/2597

1、创建用户表

如果有现成的表可以跳过创建用户表教程

1.1 点实体维护,点新建

注意:如果有现成的直接导入表就行了

image.png

1.2 配置列的同步表结构

点配置列 ,保证有用户和密码就行了

image.png

1.3点同步生成表

image.png

1.4 测试表是否成功

可以点开SQL工具查看一下这个表是不是报错,不报错就成功了

有些区分大小写 表名加关键词 sqlserver是[xx] mysql是`xx`  pgsq是 "xx"

image.png

1.5 插入一条登录记录

不同数据库SQL有些差异

 image.png

 如果你不想用SQL插入也是可以的如下:

 接口管理->创建插入接口->选用户表->到文档界面去界面插入也可以

只要有条记录能登录就行了

2、配置授权JSON

打开json文件把 表名、用户字段名配置jwt节点下面

Enable设置为true

"Jwt": {
  //设置true会启用自带的jwt授权
  "Enable": true,
  //jwt密钥
  "Secret": "C0mPl3xS3cr3tK3yF0rJWT@DEVELOPMENT",
  //用户表的表名 (实体管理可以创建表,操作步骤:1.创建实体 2.同步生成表 )
  "UserTableName": "user",
  //用户名字段名称 (是名称不是值)
  "UserNameFieldName": "username",
  //密码字段名称 (是名称不是值)
  "PasswordFieldName": "password",
  //分钟
  "Expires": 1000, 
  // 数据库操作会用到Claim中的值作为条件
  "Claim": [
    {
      //Claim Key
      "Key": "Id",
      //用户表中的字段
      "FieldName": "Id",
      //C#类型
      "Type": "long"
    }
  ],
  //禁用系统接口, 设置为true将禁用所有系统接口(建表、建接口等) 
  "DisableSystemInterface": false
}

3、完成登录

3.1 打开授权界面

image.png

3.2 点登录

image.png

3.3 保存token

image.png

3.4测试登录

在不禁用系统接口的情况下,能返回用户信息说明成功了,所有接口都会收token约束


image.png

4、数据过滤

4.1 界面:通用查询权限过滤

这个claimkey就是你配置文件配置的和表字段对应的key

image.png

4.2 界面:SQL查询

在sql中也可以拿到claimkey内容的

image.png

4.3 代码中获取授权信息

只能在http接口拿到,定时任务等是没有上下文的

 //升级到 1.1.2
 var jwtinfos=DependencyResolver.GetClaims();

5、开放不授权URL

 apiObj.InterfaceOptions.NoAuthorizationFunc = it =>
    {
        var url = it?.InterfaceInfo?.Url;
        return url=="xxxx";//true表示不需要授权
    };


果糖网