环境:,net 6+oracle 11g
使用identity框架实现了,真实用户的登录
使用JWT令牌保证了数据安全
使用Signalr框架实现了后端消息的主动推送
所需要的包:
后端代码;
第一步:先使用Identity框架建立用户与角色模型
dentity框架主要作用是,方便对用户以及用户的权限进行管理,创建两个实体后可以使用Manager<T>对其尽心管理,其内还封装了很多常用方法,例如;通过ID寻找name等。
框架还会对用户的密码经行加密处理,加密后在传入数据库当中。
1.MyRole类,dentity框架框架会默认自动生成一些列,可以不用自建列
2.Myuser类
3.为上方两个类设置上下文类,此处直接进行了配置,也可单独写一个配置类进行配置。
此处指明了表名是由于在连接Oracle的情况下,efcore转换成的SQL代码会把表明写的很长,所以指明具体表名。
4.在programe中对dentity框架进行注册
此处为了方便,所以把密码的要求降低了很多,实际应用中这是不好的。
对密码还有其他的配置可以,详情可自行查阅
最后,建立完实体之后记得,在nuget控制台中使用:Add-Mgration +迁移名,Update-Database进行数据库库表的创建。
第二步:对JWT Token进行配置
使用JWT,他相较于传统的session,在跨域方面更方便。JWT是无状态的,其内蕴含所需要的全部数据,省了服务器的开销,可以将其放在前端页面上。JWT中可以设置过期时间的,而不需要服务器注销。所以JWT多应用于分布式集群及API前后端分离的项目当中。
1.新建模型类,对用于对key与过期时间的读取
2.在appsettings.json文件中配置需要读取的key与过期时间,此处是为了方便,你也可以在VS自带的虚拟环境变量中配置,也可以直接配置在本地的环境变量中,或者配置在secret安全文件中
3.在programe中对JWT进行注册
4.添加JWT中间件
app.UseAuthentication();//JWT的中间件
第三步:signalr实现聊天功能。
signalr能够将数据从后端主动推送到前端页面,
适合于需要通知个及时消息的应用例如:聊天,公告等。
适用于更新频率高的应用,例如:游戏,GPS等。
ASP.NET Core 中的SignalR
可以自动处理连接管理。
可以同时向所有连接的客户端发送消息。 例如聊天室。
可以向特定客户端或客户端组,特定用户或用户组发送消息。
可以对其进行缩放,以处理不断增加的流量。
可以使服务器于客户端互相调用其方法
1.新建类继承Hub,并注入UserManager<T>,方便之后操作
2.在programe中添加SignalR服务
builder.Service