Shiro具体的权限是在实现类中以annotation的形式指派

来源:互联网 发布:python自动化开发 编辑:程序博客网 时间:2024/05/30 04:44

doGetAuthorizationInfo函数是授权的函数,其具体的权限是在实现类中以annotation的形式指派的,它负责验证用户是否有权限访问。详细的细节容我之后添加。

@RequiresAuthentication
    要求当前Subject 已经在当前的session 中被验证通过才能被注解的类/实例/方法访问或调用。
    验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。


@RequiresUser
    需要当前的Subject 是一个应用程序用户才能被注解的类/实例/方法访问或调用。要么是通过验证被确认,或者在之前session 中的'RememberMe'服务被记住。
    验证用户是否被记忆,user有两种含义:一种是成功登录的(subject.isAuthenticated() 结果为true);另外一种是被记忆的(subject.isRemembered()结果为true)。


@RequiresGuest
    要求当前的Subject 是一个“guest”,也就是他们必须是在之前的session中没有被验证或记住才能被注解的类/实例/方法访问或调用。
    验证是否是一个guest的请求,与@RequiresUser完全相反。
    换言之,RequiresUser == !RequiresGuest。此时subject.getPrincipal() 结果为null.


@RequiresRoles
    要求当前的Subject 拥有所有指定的角色。如果他们没有,则该方法将不会被执行,而且AuthorizationException 异常将会被抛出。例如:@RequiresRoles("administrator")
或者@RequiresRoles("aRoleName");
void someMethod();
    如果subject中有aRoleName角色才可以访问方法someMethod。如果没有这个权限则会抛出异常AuthorizationException。


@RequiresPermissions
    要求当前的Subject 被允许一个或多个权限,以便执行注解的方法,比如:
    @RequiresPermissions("account:create")
    或者@RequiresPermissions({"file:read", "write:aFile.txt"} )
    void someMethod();

原创粉丝点击