同步操作将从 JbootProjects/jboot 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用 Shiro 的易于理解的 API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Jboot 默认情况下并没有依赖 shiro,因此,在在使用 Jboot 的 Shiro 模块之前,需要你添加下 Shiro 的 Maven 依赖。
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.3.2</version>
</dependency>
注意:目前暂时不支持 Shiro 1.4.x 版本,晚点会添加支持。
同时,需要在 resources 目录下配置上您的 shiro.ini
配置文件,并在 jboot.porperties
添加上 jboot.shiro.ini = shiro.ini
配置。在 shiro.ini
文件里,需要在自行扩展 realm
等信息。
Jboot 的 Shiro 模块为您提供了以下12个模板指令,同时支持 Shiro 的5个 Requires 注解功能。方便您使用 Shiro。
12个Html模板指令
5个Controller注解
shiroAuthenticated的使用
#shiroAuthenticated()
登陆成功:您的用户名是:#(SESSION("username"))
#end
shiroGuest的使用
#shiroGuest()
游客您好
#end
shiroHasAllPermission的使用
#shiroHasAllPermission(permissionName1,permissionName2)
您好,您拥有了权限 permissionName1和permissionName2
#end
shiroHasAllRoles的使用
#shiroHasAllRoles(role1, role2)
您好,您拥有了角色 role1和role2
#end
shiroHasAnyPermission的使用
#shiroHasAnyPermission(permissionName1,permissionName2)
您好,您拥有了权限 permissionName1 或 permissionName2
#end
shiroHasAnyRoles的使用
#shiroHasAllRoles(role1, role2)
您好,您拥有了角色 role1 或 role2
#end
shiroHasPermission的使用
#shiroHasPermission(permissionName1)
您好,您拥有了权限 permissionName1
#end
shiroHasRole的使用
#shiroHasRole(role1)
您好,您拥有了角色 role1
#end
shiroNoAuthenticated的使用
#shiroNoAuthenticated()
您好,您还没有登陆
#end
shiroNotHasPermission的使用
#shiroNotHasPermission(permissionName1)
您好,您没有权限 permissionName1
#end
shiroNotHasRole的使用
#shiroNotHasRole(role1)
您好,您没有角色role1
#end
shiroPrincipal的使用
#shiroPrincipal()
您好,您的登陆信息是:#(principal)
#end
RequiresPermissions的使用
public class MyController extends JbootController{
@RequiresPermissions("permission1")
public void index(){
}
@RequiresPermissions(value={"permission1","permission2"},logical=Logincal.AND)
public void index1(){
}
}
RequiresRoles的使用
public class MyController extends JbootController{
@RequiresRoles("role1")
public void index(){
}
@RequiresRoles(value = {"role1","role2"},logical=Logincal.AND)
public void userctener(){
}
}
RequiresUser、RequiresGuest、RequiresAuthentication的使用
public class MyController extends JbootController{
@RequiresUser
public void userCenter(){
}
@RequiresGuest
public void login(){
}
@RequiresAuthentication
public void my(){
}
}
编写一个类实现 实现接口 io.jboot.component.shiro.JbootShiroInvokeListener,例如:
public class MyshiroListener implements JbootShiroInvokeListener {
private JbootShiroConfig config = Jboot.config(JbootShiroConfig.class);
@Override
public void onInvokeBefore(FixedInvocation inv) {
//do nothing
}
@Override
public void onInvokeAfter(FixedInvocation inv, AuthorizeResult result) {
//说明该用户授权成功,
//可以允许访问
if (result.isOk()) {
inv.invoke();
return;
}
//shiro授权不成功,返回授权错误码
int errorCode = result.getErrorCode();
switch (errorCode) {
case AuthorizeResult.ERROR_CODE_UNAUTHENTICATED:
doProcessUnauthenticated(inv.getController());
break;
case AuthorizeResult.ERROR_CODE_UNAUTHORIZATION:
doProcessuUnauthorization(inv.getController());
break;
default:
inv.getController().renderError(404);
}
}
public void doProcessUnauthenticated(Controller controller) {
// 处理认证失败
}
public void doProcessuUnauthorization(Controller controller) {
// 处理授权失败
}
};
其次在jboot.properties中配置即可
jboot.shiro.invokeListener=com.xxx.MyshiroListener
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。