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

xiaoxiao2021-02-27  174

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();

转载请注明原文地址: https://www.6miu.com/read-11015.html

最新回复(0)