shiro注釈権限制御-5個権限注釈
3669 ワード
shiro注釈権限制御-5個権限注釈
シロには5つの注釈がありますので、詳しくお話ししましょう RequiresAuthentication:
この注記を使用するクラス、インスタンス、メソッドは、アクセスまたは呼び出し時に、現在のSubjectが現在のセッションで認証されている必要があります.
RequiresGuest:
この注記を使用してマークアップされたクラス、インスタンス、メソッドは、アクセスまたは呼び出し時に、現在のSubjectが認証される必要がなく、または元のセッションにレコードが存在する「gust」アイデンティティであってもよい.
RequiresPermissions:
現在のSubjectで特定のパーミッションが必要な場合は、注記によってマークアップされたメソッドを実行できます.現在のSubjectにこのような権限がない場合、メソッドは実行されません.
RequiresRoles:
現在のSubjectで指定されたすべてのロールを持つ必要がある場合、この注記によってマークアップされたメソッドにアクセスできます.当日、Subjectがすべての指定されたロールを同時に所有していない場合、メソッドは実行されず、AuthorizationException例外も放出されます.
RequiresUser
現在のSubjectは、注記によってマークアップされたクラス、インスタンス、メソッドにアクセスまたは呼び出すために適用されるユーザーでなければなりません.
使用方法:
Shiroの認証注記処理には内定の処理順序があり、複数の注記がある場合は、前のものが合格しても後のものをチェックし続け、合格しなければそのまま戻り、処理順序は(実際の宣言順序とは関係なく):
RequiresRoles RequiresPermissions RequiresAuthentication RequiresUser RequiresGuest
たとえば、RequiresRolesとRequiresPermissionsを同時に宣言すると、このロールを持つと同時に適切な権限を持つ必要があります.
1) RequiresRolesは、Controllerまたは方法で使用することができる.複数のrolesを使用できます.複数のrolesの場合、デフォルトのロジックはANDです.つまり、すべてのroleがアクセスできるようになります. 例
2) RequiresPermissions RequiresRolesと類似 例
3) RequiresAuthentication,RequiresUser,RequiresGuestこの3つの使い方は同じ です
注意:Shiroはslf 4 j,commons-beanutils,commons-loggingの3つのjarパッケージに依存します.
シロには5つの注釈がありますので、詳しくお話ししましょう
この注記を使用するクラス、インスタンス、メソッドは、アクセスまたは呼び出し時に、現在のSubjectが現在のセッションで認証されている必要があります.
この注記を使用してマークアップされたクラス、インスタンス、メソッドは、アクセスまたは呼び出し時に、現在のSubjectが認証される必要がなく、または元のセッションにレコードが存在する「gust」アイデンティティであってもよい.
現在のSubjectで特定のパーミッションが必要な場合は、注記によってマークアップされたメソッドを実行できます.現在のSubjectにこのような権限がない場合、メソッドは実行されません.
現在のSubjectで指定されたすべてのロールを持つ必要がある場合、この注記によってマークアップされたメソッドにアクセスできます.当日、Subjectがすべての指定されたロールを同時に所有していない場合、メソッドは実行されず、AuthorizationException例外も放出されます.
現在のSubjectは、注記によってマークアップされたクラス、インスタンス、メソッドにアクセスまたは呼び出すために適用されるユーザーでなければなりません.
使用方法:
Shiroの認証注記処理には内定の処理順序があり、複数の注記がある場合は、前のものが合格しても後のものをチェックし続け、合格しなければそのまま戻り、処理順序は(実際の宣言順序とは関係なく):
RequiresRoles RequiresPermissions RequiresAuthentication RequiresUser RequiresGuest
たとえば、RequiresRolesとRequiresPermissionsを同時に宣言すると、このロールを持つと同時に適切な権限を持つ必要があります.
1) RequiresRoles
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresRoles {
String[] value();
Logical logical() default Logical.AND;
}
// user
@RequiresRoles("user")
// user admin
@RequiresRoles({"user","admin"})
// user admin ; logical OR
@RequiresRoles(value={"user","admin"},logical=Logical.OR)
2) RequiresPermissions
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresPermissions {
String[] value();
Logical logical() default Logical.AND;
}
// index:hello
@RequiresPermissions("index:hello")
// index:hello index:world
@RequiresPermissions({"index:hello","index:world"})
// index:hello index:world
@RequiresPermissions(value={"index:hello","index:world"},logical=Logical.OR)
3) RequiresAuthentication,RequiresUser,RequiresGuest
@RequiresAuthentication
@RequiresUser
@RequiresGusst
注意:Shiroはslf 4 j,commons-beanutils,commons-loggingの3つのjarパッケージに依存します.