zoukankan      html  css  js  c++  java
  • Open.auth 开源项目学习(一)SSO单点登录

            整理好自己的心情,我觉得我要开始提升自己了。于是我翻开我的项目文件夹准备找一个开源项目啃一啃。我个人比较喜欢学习各种设计思想比较优秀的项目。而不是各种复杂算法,偏底层项目。于是我选择了Open.auth .NET作为我要啃的项目。

          首先看下项目结构:

                 mvc:主要站点项目  网站的表示层及渲染是在这个页面

         webApi:业务接口项目 向表层提供一些数据访问业务处理相关的接口

                 App:核心业务层 作为数据访问跟webApi层的连接作用,并做数据整合处理

                 Domain:数据访问层   里面有一些我们需要用到的数据模型

                 Infrastructure:基础配置层,包括一些公用的类,基础设置,及文件。

                 Repository:数据仓库 做一些数据的映射提供程序与数据库交互的相关业务

    这是我初步对项目的理解。

    那么下一步我们启动应用,会发现首先映入眼帘的是登录界面。

    我们一步一步观察登录的代码会发现。他并没有直接访问登录的业务代码,也没有通过表层发ajax请求来做登录验证。

    而是在后台的登录代码里面再请求登录的接口。

    代码:

            /// <summary>
            /// 登陆接口
            /// </summary>
            /// <param name="appKey">应用程序key.</param>
            /// <param name="username">用户名</param>
            /// <param name="pwd">密码</param>
            /// <returns>System.String.</returns>
            public static LoginResult Login(string appKey, string username, string pwd)
            {
                var requestUri = "/api/Check/Login";
    
                try
                {
                    var value = _helper.Post(new
                    {
                        AppKey = appKey,
                        UserName = username,
                        Password = pwd
                    }, requestUri);
    
                    var result = JsonHelper.Instance.Deserialize<LoginResult>(value);
                    return result;
                   
                }
                catch (Exception ex)
                {
                    return null;
                }
            }

    为什么要这么做呢?

    我们分析一下他的好处。

    1.不暴露真实的数据访问路口,安全性更好

    2.我可以在我的网站写我的登录校验逻辑,你也可以写你接口的校验逻辑。两者可以兼容。符合开闭原则

    3.对于多个项目用同一个登录的情况会有很好的兼容作用

    劣势:

    1.性能上可能会有损失,当然这个有待测试

    2.提升的代码的逻辑复杂度

    暂时只想到这么多,下次再继续聊。

  • 相关阅读:
    Idea导入tomcat源码
    SpringBoot学习 (一) Eclipse中创建新的SpringBoot项目
    Zookeeper客户端Curator使用详解
    解决老是提示找不到Mapper文件无法执行定义的方法问题!
    人工智能、机器学习、深度学习三者之间的关系
    java5增加对https的支持
    Spring静态注入的三种方式
    Thrift入门及Java实例演示【转】
    activeMQ 学习
    python中 import 和from ... import 的区别
  • 原文地址:https://www.cnblogs.com/DavidHuAtIT/p/10190042.html
Copyright © 2011-2022 走看看