手把手撸套框架-登录设计
登录设计,这个话题真的是可大可小,过往在Winner框架中 一直是 使用SSO 做登录,之前也写过基于Outh2.0做授权登录,
但是现在我任职的这个家企业,虽然对于SSO也有需要,但是目前这一块需求还是不那么强烈,各个系统之间都是独立去管控的。
这让6月份刚入职时候的我,上来就准备以SSO(单点登录)的方式去处理,基于IdentityServer4 (以下简称Id4)完成了一个。
参考资料:
http://www.identityserver.com.cn/
http://www.tnblog.net/heart320/article/details/3046
https://www.cnblogs.com/stulzq/p/8119928.html
这个我就不多说了,关于这个的资料,网上实在太多了,最后项目发布的时候,后来公司只给我一个子域名的权限,这个当时就尴尬了。
这属于 人为造成的问题,公司就一个域名,就分配一个二级域名给我,后来我想用端口的 方式去解决。最后还是放弃了。
所以放弃了 使用 SSO了。 这个事导致了 对Victory 从 “大框架” 直接 转为"小框架"。
大框架就是 各个项目都是独立系统比如: 权限系统,登录中心,调度系统,日志系统。都是独立站点,独立部署,新项目上线只需要配置,然后调接口就行。
小框架则是,各个功能集成在一个站点里面: 登录功能,权限功能,调度功能,日志功能。 新建一个项目,就直接附带了这些功能,然后写核心业务。
所以,直接这也取决于,我就做一个小项目,别一上来就部署五六个站点。这一点“工厂型企业” 和 “互联网企业” 有很大区别。(不过后续在公司推广 “大框架”概念,慢慢的公司的人也接受大框架的概念了)
从大框架 转为了小框架, 导致了我对 前后端分离,都产生了犹豫,虽然我给Victory框架制定了这么一个发展路线。
1.x 前后端不分离,虽然使用Vue 但是更多的是做MVVM 数据绑定。主要技术选项: Core3.1 (mvc) + Sqlserver+ FreeSql + Bootstarp + Jquery + AdminLte + Vue
2.x 前后端分离,完全使用Vue,前端统一elemnet-ui,主要技术选项: Core3.1 (mvc) + Sqlserver+ FreeSql + Vue + vue-element-admin
至此,在登录方式上,我们就产生了三种方式:
1,基于id4 ,做SSO授权中心, 这个估计公司认可我的思路之后,有机会做大框架架构的时候,才有机会实施。
2,基于 Authorize, 这个是Core过滤器 自带这么一个 功能,直接用就好了。
3,基于Jwt , 做前后端分离以及客户端进行对接的时候,等Victory 2.0 实施的时候 就可以用这种方式去实施。
今天重点讲的还是 基于core 自带的登录功能,也是最简单的一种,三步走:
step1:将身份认证中间件添加到容器中:
step2:制作一个登录界面,登录成功将信息写入cookie:
step3: 在需要登录之后才能访问的页面控制器上打上 过滤器标签:
三步即可完成一个登录了, 方便了很多,传统的方式是 去写一个session,然后每个控制用基类里面 添加 session判断去处理验证登录。
这里就简单的讲了一下 如何用 Authorize 过滤器 去实现登录功能,另外还列了一下 另外两种,一个是大框架的 Id4,一个前后端分离的Jwt,
当然我这里这么分类 也不一定正确, Id4 也可以使用 jwt 做数据传输。 他们三种实现登录的方式并不是 一个并列关系,硬要并列Jwt 应该是和Cokkie是一种并列关系。
所以这里我的Victory1.0 是使用 Authorize 基于Cookie 实现,等升级到2.0的时候 ,我会去基于Jwt 的格式去实现。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗