史郎を建てフィルターフィルター
コアフィルタークラス:DefaultFilter、パスに対応する構成どの処理のためのインターセプタ
- アノン:org.apache.shiro.web.filter.authc.AnonymousFilter
匿名ユーザーがアクセスにサインインする必要はありません匿名のインタセプタ、リソース、または観光客は、通常、静的リソースをフィルタリングするために使用します。
- authcは:org.apache.shiro.web.filter.authc.FormAuthenticationFilter
ログイン認証は、アクセスに必要とされます
- ユーザー:org.apache.shiro.web.filter.authc.UserFilter
ユーザーインターセプタは、ユーザーの存在の必要性を表明しました。
- org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
インターセプタの役割の権限は、ユーザーがyesまたはno役割を担っていることを確認してください。
パラメータは、複数のパラメータがある複数のパラメータによって各パラメータによって考慮されなければならない[「管理者、ユーザーは」]、より多くの書き込み通ってくるためにいくつかの文字を表し、役割を書くことができます
ソースは以下のとおりです。
- パーマ:org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter
インターセプタを承認、ユーザーが権限を持っていることを確認してください
パラメータ、より多くの書き込みいくつかが通ってくる必要性の許可を表現し、複数のパラメータがある場合には、パーマ複数のパラメータ[「ユーザー、管理者」を]書くことができ、各パラメータによって考慮されなければなりません
自分の下のソースを表示ココア
- authcBasic:org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
httpBasic認証インターセプター。
- ログアウト:org.apache.shiro.web.filter.authc.LogoutFilter
終了インターセプタは、実行後に直接ジャンプしますshiroFilterFactoryBean.setLoginUrl();
URL設定
- ポート:org.apache.shiro.web.filter.authz.PortFilter
ポートを介してインターセプターポート、。
- SSL:org.apache.shiro.web.filter.authz.SslFilter
SSLインターセプタは、HTTPSプロトコルのみを通ってくることを要求します。
構成パス史郎をフィルタリング
- パスのワイルドカードのサポート?、*、**、ディレクトリの区切りが含まれていないワイルドカードのマッチングに注意を払います「/」
- * *試合の前に付けることができます*せずに、すべてにマッチしますが、より多くのコロンは、あなたが複数の一致する必要があります
URLウェイ優先順位の最初の試合取るためのアクセス許可 :/ユーザー3に一致するように/ユーザーなどの文字を、一致しますが、一致していない/ユーザー/ ?? ; *:/、*などの追加/として、ゼロ以上の文字列を、マッチのマッチングaddTestが、しかし/ユーザ/一致しない1。 **:例えば/ユーザーとしてマッチングパスゼロ以上のパス、/ * *一致する/ユーザ/ XXXまたは/ユーザ/ XXX / YYY 例 /ユーザー/ ** =フィルタ1 /ユーザー/追加します=フィルタ2 リクエスト/ユーザー/追加ヒット迎撃フィルタ1であります
- パフォーマンスの問題は:ワイルドカード文字列マッチングはそれよりも複雑になるので、パフォーマンスが弱くなり、推奨される方法は、文字列マッチングを使用することです
データの史郎データセキュリティの暗号化と復号化
- なぜ、暗号化と復号化します
そのようなプレーンテキストで保存されたパスワードなどの平文データを、明らかにする可能性が高い、それが漏洩した場合に深刻な影響を持つことになります
- 何がハッシュアルゴリズムされます
一般的なハッシュアルゴリズムと呼ばれる、単にパスワードを記憶するのに適した固定長の圧縮関数のメッセージダイジェストに任意の長さのメッセージを意味します。
- 塩(塩)とは何ですか
暗号化データ= MD5(プレーンテキストのユーザパスワード+ ID)、クラック:暗号化されたデータは、ハッシュ関数を介して直接得られた場合、対応するサイトを解読することは、ユーザID、例として通常特定用途自動化プロセスに追加されるブルートフォースは、容易です難易度が大きくなり、あなたは、このような複数のMD5など複数のハッシュを、使用することができます
- パスワードが正しいことを確認するために、CredentialsMatcher内史郎
出典:
AuthenticatingRealm - > assertCredentialsMatch()
カスタム検証ルール
史郎アクセス制御モード
プロフィールなど
ShiroConfigを使用して、フォローアップを伴うだろう。
注釈の道
- (論理値= { "管理者"、 "編集者"}、= Logical.AND)@RequiresRoles
私たちは、同時に2つが確立表す2つの役割の役割管理者と編集者を必要とし、
-
(論理的、= Logical.OR値= { "ユーザ:加算"、 "デル・ユーザ"})@RequiresPermissions
追加またはユーザー:あなたは、許可ユーザー必要デル権限一つを、ORであるかを意味します。
プログラム
-
共通API
subject.hasRole( "XXX");
subject.isPermitted( "XXX");
主題。isPermittedAll( "XXXXX"、 "YYYY");
subject.checkRole(「XXX」); //戻り値は、道内部使用アサーションのために考慮することはできません
説明するため史郎キャッシュモジュール
- 史郎キャッシュとは何ですか
史郎は、認証情報と認証情報のキャッシュを提供します。
デフォルトではオフに認証情報、デフォルトで有効になっ史郎キャッシングのための認証情報をキャッシュしている(ので、大量のデータの承認)。
- AuthenticatingRealmとAuthorizingRealmはそれぞれAuthenticationInfoとAuthorizationInfo情報のキャッシュを提供します。
Shiro Session模块
- セッションセッションとは何ですか
どのユーザセッションに識別するためのプログラムによれば、ユーザと番組との間の直接リンク、およびセッション類似javaweb
- セッションマネージャとは何ですかSessionManagerの
セッションマネージャは、被写体のすべてを管理するためのすべての操作は、史郎のコアコンポーネントです
-
核心方法:
- shiro中的会话管理器有多个实现
- SessionDao 会话存储/持久化,继承关系
- 核心方法
//创建 Serializable create(Session session); //获取 Session readSession(Serializable sessionId) throws UnknownSessionException; //更新 void update(Session session) //删除,会话过期时会调用 void delete(Session session); //获取活跃的session Collection<Session> getActiveSessions();
- 附属资料:
RememberMe 1、 Cookie 写到客户端并 保存 2、 通过调用subject.login()前,设置 token.setRememberMe(true); 3、 关闭浏览器再重新打开;会发现浏览器还是记住你的 4、 注意点: - subject.isAuthenticated() 表示用户进行了身份验证登录的,即Subject.login 进行了登录 - subject.isRemembered() 表示用户是通过RememberMe登录的 - subject.isAuthenticated()==true,则 subject.isRemembered()==false, 两个互斥 - 总结:特殊页面或者API调用才需要authc进行验证拦截,该拦截器会判断用户是否是通过 subject.login()登录,安全性更高,其他非核心接口或者页面则通过user拦截器处理即可