一、引入依赖(已解决版本冲突) 复制代码 <! -史朗-FreeMarkerのタグがスタート- > <依存> <groupIdを> net.mingsoft </ groupIdを> <たartifactId>史郎-FreeMarkerのタグ</たartifactId> <バージョン> 1.0 </バージョン> <除外> <除外> <のgroupId> org.apache.shiro </のgroupId> <たartifactId>シロ、すべての</たartifactId> </除外> <除外> <のgroupId> org.freemarker < /のgroupId> <たartifactId> FreeMarkerの</たartifactId> </除外> </除外> </依存> <! -史朗-FreeMarkerのタグの終わり- > <! - FreeMarkerのスタート- > <依存> <groupIdを> org.freemarker </ groupIdを> <たartifactId> FreeMarkerの</たartifactId> <バージョン> 2.3.28 </バージョン> </依存関係> <! - FreeMarkerのエンド- > <! -史朗開始- > <依存> <groupIdを> org.apache.shiro </ groupIdを> <たartifactId>史郎-すべての</たartifactId> <バージョン> 1.4.0 </バージョン> </依存関係> <! -史朗の終わり- > 复制代码 二、配置 のJava代码: 复制代码 パブリッククラスFreeMarkerConfigExtendがFreeMarkerConfigurer {拡張 @Override ます。public void afterPropertiesSetは()のIOException、TemplateException {スロー スーパーを。afterPropertiesSet();{TemplateException 構成this.getConfiguration CFG =(); //追加タグ四郎 cfg.setSharedVariable( "四郎"、新新ShiroTagsは()); } } コードをコピーし たコードをコピー - < - FreeMarkerの環境設定を!> <豆ID = "freemarkerConfig"クラス=「COM .demo.shiro.common.freemarker.FreeMarkerConfigExtend "> <! -テンプレート位置、以下であっ構成されていないでしょう。 - > <プロパティ名=" templateLoaderPath "値=" / WEB-INF /ビュー「/> <プロパティ名は= "freemarkerSettings"> < ! - 一部の設定- > <小道具> <小道具キー= "template_update_delay"> 0 </小道具> 。<小道具キー= "default_encoding"> UTF-8 </小道具> <キー= "ロケール">がzh_CN </小道具>小道具 <支えるキー= "boolean_format">真、</小道具>偽 <プロプキー= "DATETIME_FORMAT"> YYYY-MM-DD HH:MM:SS </小道具> <プロパキー= "DATE_FORMAT"> YYYY-MM-DD </小道具> HH <キー= "TIME_FORMAT"を支える>:mm:ssの</小道具> 0 <キー= "をnumber_format"小道具>を########## </小道具>。 <支えるキー= "classic_compatible">真</小道具> <小道具キー= "template_exception_handler">無視</小道具> <キー= "auto_importを"小道具> <! -自动装载、引入引入Freemarkerの、用于Freemarkerのマクロ- > /common/_meta.ftlとして_meta、 _footerとして/common/_footer.ftl <! - / _menuなどの共通/ menu.ftl - > </小道具> </小道具> </ property>の </豆> コードをコピー 3、史郎を詳細タグ 1.ゲスト(ユーザー) <@ shiro.guest> あなたの現在の観光客は、<a href="javascript:void(0);">ログインする</a> </ @ shiro.guest> ユーザー2.(すでにログインログインまたは私を覚えている) <@ shiro.user> ようこそ[<@ shiro.principal />]にログインし、</a>の<aのhref="/logout.shtml">出口 </ @ shiro.user> 3.認証された(すでに認定を受け、自分のログインを記憶除きます) < @ shiro.authenticated> ユーザー[<@ shiro.principal />]は、によって認証された </ @ shiro.authenticated> 4. notAuthenticated(および認証された逆) <@ shiro.notAuthenticated> 私を忘れないでください、ログインを含む(非認定の現在のアイデンティティA) </ @ shiro.notAuthenticated> 機能主な目的:あなたがキー操作をしたいときに、この操作を識別するためには、認証の必要性をシステムへのアクセスは、私のログイン情報を覚えていることができ、そのような支払いシステムとして、ログインしていないが、認識。 5。 主要なラベルは、 ログイン時に主要なラベルは、値が取られます。次のコードの実装クラスレルムで: ... 返す新しいSimpleAuthenticationInfo(ユーザー、user.getPswd( )、 <@ shiro.hasAnyRoles名=「管理者、 ユーザー、 ユーザ名は、それが直接使用することができた場合は、新たなSimpleAuthenticationInfoで(最初の引数、...)最初の引数が置かれています。 <! -ユーザー名を取得- > <。@shiro校長/>の 最初の引数は、このようなプットUserオブジェクトオブジェクトを置いている場合。ユーザー名フィールドを取りたいのであれば。 <! - -プロパティを指定します> <プロパティshiro.principal @ = "ユーザ名" /> と次のJavaのJavaコードが一致 ユーザーユーザー=(ユーザー)SecurityUtils.getSubject()のgetPrincipals();. 文字列名= user.getUsernameを(); 6.ラベルhasRoleも(それがこの役割を持っているかどうかを判断する) <shiro.hasRole @名= "ADMIN"> ユーザー[<@ shiro.principal />]ロールADMIN有する </ @ shiro.hasRole>を 7。 (それらの役割を持っているかどうかを判定する一つが)。hasAnyRolesタグ ユーザーは[<@ shiro.principal />]ロールまたはユーザまたは管理者会員有する </ shiro.hasAnyRoles @> 。8。 <shiro.lacksRole @名= "管理者"> ユーザー[<@ shiro.principal />]ではありませんadminロールを持っている </ @ shiro.lacksRole> タグhasPermission(この権限を持っているかどうかを判断)9. <shiro.hasPermission名@ = "ユーザーの追加/"> 権限を追加/ユーザーを持つユーザー[<@ shiro.principal />] </ @ shiro.hasPermission> 10 lacksPermissionタグ(これがあるか否かを判定する許可) <shiro.lacksPermission @名= "ユーザ追加/"> ユーザー[<@ shiro.principal />]ユーザを持たない/アクセス許可を追加 </ @ shiro.lacksPermission>