首页 > 代码库 > Shiro启用注解方式
Shiro启用注解方式
shiro验证权限方式一种是基于url配置文件:
例如:
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <!-- 登录页面 ,用户 登录不成功自动 返回该页面 --> <property name="loginUrl" value=http://www.mamicode.com/"/login"/> <!-- 登录成功页面,登录成功后跳转到该页面 --> <property name="successUrl" value=http://www.mamicode.com/"/index"/> <!-- 无权访问跳转页面 --> <property name="unauthorizedUrl" value=http://www.mamicode.com/"permNo"/> <!-- 自定义权限页面设置url的访问权限。anon表示不用验证, 都可以访问。anthc:authc filter 监听,不登陆不能访问。logout:logout filter监听。 没有列出的常用配置:perms["remote:invoke"] :需要角色romote 和权限invoke才能访问。roles["admin"]需要角色admin才能访问。设置可用“,”隔开, 如:/admin/test = authc,roles[admin] --> <property name="filterChainDefinitions"> <value> <!-- 无参,表示需认证才能使用 --> /home=authc /resources/**=anon </value> </property> </bean>
另外一种是基于注解:
例如:
RequiresAuthentication注解
RequiresAuthentication注解要求在访问或调用被注解的类/实例/方法时,Subject在当前的session中已经被验证。
@RequiresAuthentication public void updateAccount(Account userAccount) { //this method will only be invoked by a //Subject that is guaranteed authenticated ... }
RequiresGuest注解
RequiresGuest注解要求当前Subject是一个“访客”,也就是,在访问或调用被注解的类/实例/方法时,他们没有被认证或者在被前一个Session记住。
@RequiresGuest public void signUp(User newUser) { //this method will only be invoked by a //Subject that is unknown/anonymous ... }
RequiresPermissions 注解
RequiresPermissions 注解要求当前Subject在执行被注解的方法时具备一个或多个对应的权限。
@RequiresPermissions("account:create") public void createAccount(Account account) { //this method will only be invoked by a Subject //that is permitted to create an account ... }
RequiresRoles 注解
RequiresPermissions 注解要求当前Subject在执行被注解的方法时具备所有的角色,否则将抛出AuthorizationException异常。
@RequiresRoles("administrator") public void deleteUser(User user) { //this method will only be invoked by an administrator ... }
如果在Controller中如果直接使用上面标签是不起作用的,需要开启shiro注解
bean id="myRealm" class="com.controller.MyRealm"/>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="myRealm"/> </bean> <!--========================-如果使用注解方式验证将下面代码放开===============================--> <!-- 保证实现了Shiro内部lifecycle函数的bean执行 --> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"> <property name="proxyTargetClass" value=http://www.mamicode.com/"true" /> </bean> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!--登录--> <prop key="org.apache.shiro.authz.UnauthenticatedException"> redirect:/login </prop> <!--授权--> <prop key="org.apache.shiro.authz.UnauthorizedException"> redirect:/admin/common/exceptionLog </prop> </props> </property> <property name="defaultErrorView" value=http://www.mamicode.com/"error/genericView"/> </bean>
其中com.controller.MyRealm类是我自定义的继承自AuthorizingRealm的类
来源:http://www.cnblogs.com/lvlv/p/5104758.html
来自为知笔记(Wiz)
Shiro启用注解方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。