JFinal 에 Shiro 플러그 인 기능 추가, Shiro 모든 주석 지원 - HTTL 편
구체 적 으로 다음 과 같 습 니 다. 이 애 교 는 JFinal 에 Shiro 플러그 인 기능 을 추가 하고 Shiro 의 모든 주 해 를 지원 합 니 다. - 실현 편 과 같 습 니 다.
package com.jfinal.ext.plugin.shiro;
import java.util.concurrent.ConcurrentMap;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
/**
* Shiro HTTL 。
*
* @author dafei
*/
public class ShiroKit {
/**
* action actionpath shiro 。
*/
private static ConcurrentMap<String, AuthzHandler> authzMaps = null;
private static final String NAMES_DELIMETER = ",";
/**
*
*/
private ShiroKit() {}
static void init(ConcurrentMap<String, AuthzHandler> maps) {
authzMaps = maps;
}
static AuthzHandler getAuthzHandler(String actionKey){
/*
if(authzMaps.containsKey(controllerClassName)){
return true;
}*/
return authzMaps.get(actionKey);
}
/**
* Subject
*
* @return Subject
*/
protected static Subject getSubject() {
return SecurityUtils.getSubject();
}
/**
* ?, lacksRole
*
* @param roleName
*
* @return :true, false
*/
public static boolean hasRole(String roleName) {
return getSubject() != null && roleName != null
&& roleName.length() > 0 && getSubject().hasRole(roleName);
}
/**
* hasRole , 。
*
* @param roleName
*
* @return :true, false
*/
public static boolean lacksRole(String roleName) {
return !hasRole(roleName);
}
/**
* 。
*
* @param roleNames
*
* @return :true, false
*/
public static boolean hasAnyRoles(String roleNames) {
boolean hasAnyRole = false;
Subject subject = getSubject();
if (subject != null && roleNames != null && roleNames.length() > 0) {
// Iterate through roles and check to see if the user has one of the
// roles
for (String role : roleNames.split(NAMES_DELIMETER)) {
if (subject.hasRole(role.trim())) {
hasAnyRole = true;
break;
}
}
}
return hasAnyRole;
}
/**
* 。
*
* @param roleNames
*
* @return :true, false
*/
public static boolean hasAllRoles(String roleNames) {
boolean hasAllRole = true;
Subject subject = getSubject();
if (subject != null && roleNames != null && roleNames.length() > 0) {
// Iterate through roles and check to see if the user has one of the
// roles
for (String role : roleNames.split(NAMES_DELIMETER)) {
if (!subject.hasRole(role.trim())) {
hasAllRole = false;
break;
}
}
}
return hasAllRole;
}
/**
* , lacksPermission
*
* @param permission
*
* @return :true, false
*/
public static boolean hasPermission(String permission) {
return getSubject() != null && permission != null
&& permission.length() > 0
&& getSubject().isPermitted(permission);
}
/**
* hasPermission , , 。
*
* @param permission
*
* @return :true, false
*/
public static boolean lacksPermission(String permission) {
return !hasPermission(permission);
}
/**
* 。 , user 。 notAuthenticated
*
* @return :true, false
*/
public static boolean authenticated() {
return getSubject() != null && getSubject().isAuthenticated();
}
/**
* , authenticated 。 guest , 。。
*
* @return :true, false
*/
public static boolean notAuthenticated() {
return !authenticated();
}
/**
* 。 guset 。
*
* @return :true, false
*/
public static boolean user() {
return getSubject() != null && getSubject().getPrincipal() != null;
}
/**
* “ ”, ( ) 。 user
*
* @return :true, false
*/
public static boolean guest() {
return !user();
}
/**
* , 。
* @return
*/
public String principal(){
if (getSubject() != null) {
// Get the principal to print out
Object principal = getSubject().getPrincipal();
return principal.toString();
}
return "";
}
}
httl. properties 에 코드 를 추가 합 니 다.
import.methods+=com.jfinal.ext.plugin.shiro.ShiroKit
집적 이 끝 났 는데 어떻게 사용 합 니까?
<!--#if(hasRole("root"))-->
<td>
<a href="school/selectSchool?school_id=${school.id}&school_name=${school.name}&callback_action=/class/index" class="btn btn-large btn-block btn-success"> </a>
</td>
<!--#end-->
<!--#if(hasPermission("card:confirm"))-->
<button class="btn btn-primary btn-huge btn-wide" tabindex="3"> </button>
<!--#end-->
쓰기 에 괜찮다.
----------------------------------------------------------
회사 명 마야 우
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
shiro 권한 부여Shiro 는 세 가지 방식 의 인증 을 지원 합 니 다. 본 교육 프로그램 은 첫 번 째 프로 그래 밍 방식 을 사용 하고 실제 와 웹 시스템 을 통합 하여 사용 한 후 두 가지 방식 을 사용 하도록 권한 을 부여...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.