史郎それらのもの():史郎研究

 入門

  あなたが行うことができますし、行うことができないようなアクセス許可は、あなたが簡単に理解することができます。管理システムでは、意匠権は、非常に単純なまたは非常に複雑になることがあります。シンプルなポイントは、そのようなメニューを操作することができ、システム管理者の役割と基本的に基づいて、ロールプレイングの方法、どのような役割をなど、平均的なユーザーのメニュー操作することができますが、異なるユーザーに異なる役割を可能にすることにより、異なる役割は、別のメニューに権限を付与されましたアクセス制御ユーザーのアクセスを実現しています。もちろん、このシンプルなデザインは、実際には、メニュー・コントロール権限比較的粗粒です。システムが比較的大きい場合には、詳細なアクセス許可の制御だけではなく、需要の詳細を持ってメニューにアクセスする許可、実用的なポイントがあり、また、おそらく少し深く場合、グループ間の役割の階層および部門であってもよく、コントロールの権限に関連し、その上のデータ。要するに、システム権限、単純な事実は、単純ではなく、簡単に良いを設計するために、コンクリートはその大きさとビジネスシステムに応じて考慮されるべきであるということ。しかし、私たちの一般的なシステムの観点から、簡単なアクセス制御が需要を満たすのに十分です。、春のセキュリティに比べしかし、これは、ほかに、第三者の権利の枠組み有名な春の帝国セキュリティモジュール、史郎権の枠組みのApache財団、などなど、多くの優れた代替があり、独自の権限を設計しますApacheの史郎は、使用してアプリケーションの幅の容易さで、やや優勢です。だから、このシリーズでは、初めからのブロガーは、史郎さんの使用について何かを言うために。

  では史郎の公式サイト、史郎の紹介です:件名、セキュリティマネージャおよびレルム:行う認証、許可、パスワード、およびセッション管理というJavaのセキュリティフレームワークを使用して簡単に、それは3つのコアコンポーネントがあります

  これは史郎です。私はあなたが無知力あるようにも言っていないかもしれないが、あなたにもっと説明して、世界の前に史郎に実際にある知っているので、ブロガーは、非常に簡単にコピーします!インタビュアーは、下に取得する場合は、ブローする方法については、実際には、実際のプロジェクトの経験と合わせて、いくつかのネットワークのチュートリアルを集めるが、一日にあなたをあきらめ、あなたは史郎、だけでなく、インタビューの中多くの経験を使用すると言うことができますあなたのスキル。ほとんどのブロガーはまた、いくつかのプロジェクトの使用と結合されたビデオデータ、の日を探し始め、開発は日々のストレスに対処するためではなく、合計はまだ四郎の本当の理解を感じませんでした。あなたが実際には、元を使用すると何かを見つけることができますする場合、一般的に、あなたはそれはあなたが力のポスターにロードされたときに実際にそれらを理解するふりということで、それを理解していません。平民ボーボーが主な技術的な理由を書いた理由は、それがされて - あなたがポイントに少しの知識やスキルを書くとき、あなたはおそらく、利益を終えたので、通常は、あります。技術的ボーエンのアイデアを記述する必要があるため、私たちは、知識の幅と深さを必要とし、ミスを最小限に抑えるために多くの情報へのアクセスを必要とするだけでなく、エネルギー、光アウトが必要です。この知識の吸収、再輸出の消化過程、ビデオの書き込みを見ることよりも、こんにちはWordには、当然のことながら、はるかに痛みがあり、また、より顕著に増加しました。これは、実際に、私たちは、ファインマン学習に精通している、科学を教えるための方法です。

  言葉がタイトルを改革します。史郎について、どのようにそれを口に?尿プログラマは、スキルを学び、基本的にこんにちは言葉から始まりますが、そのほとんどがこんにちは言葉、その管理のまれな深さを終了し、その吸収罰金、自分の骨髄を味わいます。ブロガーやリスト史郎モジュラー部品のパチパチにストレート好きではない、その後、逃げるパスの概念を説明し、これは平民スタイルのブロガーのものではありません!また、ファインマンは大法、ブロガーが知っている、これらの既存の概念を学習に基づいて、それは別の四郎を知っている彼らの真のgetのような、しかしので概念的なものの白を植え付けるあまりにも多くの無知な力がありません。だから、あなたはあまりにも多くのブロガーは、ボーエンの概念の定義を見て、限定としてプラグイン話すの四郎の個々の認識に応じて、時間と心配を救うことができる;多分しつこい席ダウン、あなたをリーダーとして、わずかユースポイントピット支払われた時間のは、あなたはそれの史郎を知るようになります。

  システム全体が完成し、史郎シリーズについて、全体的なアイデアは、大まかに、各モジュール、および完全こんにちはWordのスタイルデモプロジェクトに統合され、最終的部分についてのポイントを知っているフレームワークの話のアーキテクチャで始まり、そのブロガーであります、あなたが知らない、私はあなたを提供数えます!

 空撮 

  大体、史郎の機能アーキテクチャを知ってもらうようにしてください知っておく必要があります。史郎アーキテクチャについては、公式サイトには、チュートリアルと建築図面の様々なを持っていますが、ブロガーは、マップ上で直接感じて、少し予想外;少なくとも、ビューの彼らの白色点で、あなたは、私に直接史郎アーキテクチャ図を与え、私の頭が厄介です。ブロガーは、公式サイトを完了するために、明確かつ簡潔史郎機能は3つのコアコンポーネントで構成されて作られているので、我々は理解することが最初に見て、その後、新鮮なアイデアを選んだので  、件名をSecurityManagerをしてレルムで最終的に3つのコアコンポーネントの史郎の機能実現には、どのような役割を果たしています。

  件名テーマ、ある  四郎は 非常に重要な部分でコアの機能、そして地獄はそれがどのような最終的にはそれですか?次の2つの点から、それを認識することができます

    まず、関数のフレームから、現在の中央における対象四郎を「ユーザ」。このユーザーは、それが我々は通常、人間がユーザーコンテキストを理解するということではないことを意味し、引用符を再生していることに注意してください。文書の正式版によれば、ユーザは、現在のユーザーの実行特別なセキュリティビュー「は、現在実行中のユーザーのセキュリティ固有のビュー」は、デーモン、およびその他の爬虫類などのサードパーティのサービスであってもよいです。もちろん、公式の説明は、小さな白い私は見ていなかったように見えた、公式であることであり、ブロガーは少しも公式文書件名「非人道的」という概念に重点を置いが、実際には、使用しているほとんどのシーンでは、あなたが完了することを感じます権威の我々のシステムは、人々は基本的にはユーザー権限に基づいているので、我々のユーザーの一般的な文脈で理解することができます。

    フレームアーキテクチャ的には、件名が認証を実行することで、認証機能あなたの認証、許可は史郎ファサードの典型である、それによって行われなければならないことを意味ポータルフレームワーク、(外部)モードから第二に、アプリケーション。

    ファサード・パターン、異なるインターフェイスのアクセス、複数のサブシステムへの統一されたインタフェースを提供するための複数の手段、均一な高レベルインタフェースのセットをサブシステムインタフェース提供しそのようなサブシステムは、簡単に使用することを

    以下は、ファサードパターンの平民のブロガーグラフィカル翻訳したものです。

 

  示されているように、はげ医師プログラマのすべてが混乱を見つけようとすると、病院の医師を満たしたのではなく、ウィンドウによってそれぞれの患者登録エリアに登録された患者を導く後に行われています。登録ウィンドウの外部ファサードは、入学の統一された方法を提供して部署を遮蔽し、コーディネーション部門のリソース間の差をその行為を参照してください-限り、あなたはうんざりしているようとして、どのような病気に関係なく、右側に登録します。認知、件名理解することがより困難何もこのレベルでは、史郎に、件名の役割のように、あなたがログイン認証、ユーザー認証やセッション管理にするかどうか、Subjectオブジェクトによって、このようなファサードを必要とするので。ただ、登録した医師として、単純なように、あなたはより複雑があるだろうSubjectオブジェクトを作成する心配する必要はありません。実際には、どこでもあなたのアプリケーションでは、あなただけの「おじいちゃんはここで、」いいえああ、1来、三回叫ぶする必要が  SecurityUtils.getSubjectを()  、史郎は件名があなたに組み込まれて良いオブジェクト置く、ユーザー言えば、APIは本当に使用に非常に単純であり、建物のファサード対象オブジェクトの複雑四郎は、発信者の枠組みの中でカプセル化されたBuilderパターンは全く意味ではありません使用しています。このファサード設計パターンを介して四郎、内部APIアクセスシロフレームワークの複雑さを遮蔽する発信者インターフェイスに統合された外観を提供するために、同時に、共通の外部インターフェースは、異なる言語のソフトウェアと外部電流の相互作用でシールドシステムでは、異なるサービスコールの違いは、大幅史郎使用シナリオを拡大しました。

   SecurityManager,安全管理器,所有与安全有关的操作都需要通过它,它是整个 Shiro 框架的功能核心。

  上文我们说到门面对象 Subject,它只是个门面对象,就像看病的挂号窗口一样,并不完成具体的看病功能,你要看病,还得去各科室找大夫。而  SecurityManager 对象,就是在幕后帮你完成具体功能的。当然,博主这样说还是有一定的误导性,让你觉得 Shiro 的认证、授权、会话管理等这些功能的完成都是 SecurityManager 自己在干——有这样的想法,只能说你还太嫩了!哪怕你自己去设计框架,你会把所有的功能都揉成一团放到一个对象中去实现?实际上,基于责任分离的原则,SecurityManager  本身也并不完成具体的功能,它只负责需求调度,具体的功能完成都分配到具体的功能组件,比如登录认证就找登录认证组件(Authentication),授权找授权组件(Authorization),会话找会话组件(Session Manager),数据比对就找数据源组件(Realm)等等。是的,也许你已经明白过来了,这不就是Spring MVC中的核心调度器 DispatcherServlet 嘛。you are smart !在Spring MVC 中,你除了确保 DipacherServlet 的启动创建以外,在使用过程中你并不会直接和 DispacherServlet 对象打交道,它的核心工作都在幕后(框架内部)完成;Shiro 中的 SecurityManager 也是一样,我们要做的,就是保证应用程序启动的时候,能够创建出全局唯一的安全管理器实例,让该实例在幕后帮我们完成安全有关的认证、授权和会话管理等工作。

  所以,在你的项目开发中,对 SecurityManager 对象的主要工作在于,根据不同的应用程序,完成适合 SecurityManager 对象创建的配置。基于前面的阐述你也知道了,安全管理器的创建是依赖于认证、授权,缓存、数据源等诸多组件的,你可以各自创建功能组件对象然后交给 SecurityManger ,但为了项目的灵活性,通常并不建议直接在代码中用 new 的方式来创建对象,而应该是在配置文件中来完成安全管理器构建所需的组件配置。配置的方式,选择很多,比如你可以通过 Spring XML 配置,也可以用 YAML 文件或者 Properties文件配置等,但就易用性和可读性来讲, ini 文件配置方式才是更通用的选择。

   Realm:领域对象,在 Shiro 和你的应用程序安全数据(比如登录的用户名、密码,用户的权限等)之间架起一座沟通的桥梁,不然 Shiro 怎么知道你界面提交的登录用户合不合法,有没有某种权限呢? 结合上面介绍的安全管理器的功能表述,博主可以这样来给你进一步解释:安全管理器要验证用户身份,或者要获取用户对应的权限,是分别通过认证组件(Authentication)和授权组件(Authorization)来具体完成的,但是这两个组件要完成认证或授权的实际功能,又需要与安全有关的数据做支撑,这个时候,他们就要从 Realm 那里获取相应的用户数据进行比较以确定登录用户身份是否合法,或者从 Realm 那里得到用户相应的角色 / 权限以验证用户是否能进行某些操作操作。所以,通常在程序员的语境中,我们可以把 Realm 看成是我们熟悉的DataSource,即安全数据源。既然 Shiro 是关于安全的框架,那么 Realm 就必不可少,所以在实际使用中,你必须至少配置一个 Realm 才能保证框架的正常运行。这里着重强调至少,也就意味着你可以配置多个 Realm,这也是 Shiro 很有意思的地方,让你可以自由的控制程序的安全认证级别。关于多Realm认证,后面的系列文章会详解。最后说明,在Shiro中,Realm 作为一种安全数据抽象,针对不同的安全数据来源,提供了很多开箱即用的具体实现,让你可以很方便的从诸如数据库系统,LDAP(轻量目录访问协议),配置文件等渠道获取安全数据。当然,在实际开发中,我们用得更多的还是自己定义 Realm 实现的方式来使用 Realm。                  

  自此,你搞懂Shiro中 Subject,SecurityManagerRealm 这三个核心组件之间的三角关系了吗?由于布衣博主是个直男,特意将官网上已有的核心组件之间的关系图强行掰直了给你看以加深你的理解:

                                 

 图解

   

    

 

  经过上面对Shiro的核心三组件的分析,现在博主再给你奉上 Shiro 官网提供的框架架构图,你是不是有了自己更加清晰的认知了呢?

  还是简单的来看图说话。从架构图中我们可以看到,门面对象 Subject 和博主举例中的挂号窗口功能是一样一样的,通过 Subject 对象,不光 Java 中的 Web 应用或普通的单体应用自己能够访问安全模块实现业务功能,其它语言如 C/C++,Ruby,Python 等也能通过外部接口调用的方式访问 Shiro 的核心安全模块。而 Shiro内部核心 SecurityManager 的功能实现是由它内部管理的具体的功能组件如认证(Authentication),授权(Authorization),会话管理器(Session Manager),缓存管理器(Cache Manager),会话 DAO(Session DAO【将session保存到数据库、缓存等】),各种 Realm 实现等来协作完成的。此外,由于是安全框架,Shiro 提供了额外的密码模块 Cryptography,这是一个独立的模块,所以你可以将该模块当成密码工具箱一样单独应用到你项目的业务逻辑中,为各种加解密相关的操作提供便利。

  上图看懂了,关于 Shiro 你至少已经懂了一大半了。剩下的工作其实已经很简单而清晰了,就是基于对功能架构的清晰认知,我们分模块的,从具体的代码层面来编写具体的业务实现,如登录、授权、管理会话等。

  OK,Talk is cheap,Show me the code!撸码去,下期见。

おすすめ

転載: www.cnblogs.com/chenbenbuyi/p/11696033.html