1,概述
接上一个知识点,上一个项目里面我们实现的是在jsp页面如何判断用户有没有某个角色和权限,那么在前后端分离的情况下【没有jsp】如何去实现呢,我们接着上一个项目开发
2,复制项目
3,修改appliaction-shiro.xml
4,修改UserController
@RestController
@RequestMapping("user")
public class UserController {
@RequestMapping("query")
@RequiresPermissions("user:query")
public Map<String,Object">> query(){
Map<String,Object">> map=new HashMap<">>();
map.put("msg", "query");
return map;
}
@RequestMapping("add")
@RequiresPermissions("user:add")
public Map<String,Object">> add(){
Map<String,Object">> map=new HashMap<">>();
map.put("msg", "add");
return map;
}
@RequiresPermissions("user:update")
@RequestMapping("update")
public Map<String,Object">> update(){
Map<String,Object">> map=new HashMap<">>();
map.put("msg", "update");
return map;
}
@RequestMapping("delete")
@RequiresPermissions("user:delete")
public Map<String,Object">> delete(){
Map<String,Object">> map=new HashMap<">>();
map.put("msg", "delete");
return map;
}
@RequestMapping("export")
@RequiresPermissions("user:export")
public Map<String,Object">> export(){
Map<String,Object">> map=new HashMap<">>();
map.put("msg", "export");
return map;
}
}
5,创建CommonController
@RestController
@RequestMapping("common")
public class CommonController {
/**
* 未登陆
*/
@RequestMapping("unLogin")
public Object unLogin() {
Map<String,Object">> map=new HashMap<">>();
map.put("code", -1);
map.put("msg", "未登陆");
return map;
}
}
6,创建GlobalExceptionHanderAdvise全局异常监控
/**
* 全局的异常监控
* @author LJH
*
*/
//@ControllerAdvice 这个注解是监视Controller里面是否有异常发生,如果发生就跳转页面
@RestControllerAdvice
public class GlobalExceptionHanderAdvise {
/**
* 未授权
*/
@ExceptionHandler(value= {UnauthorizedException.class})
public Object unauthorized() {
Map<String,Object">> map=new HashMap<">>();
map.put("code", -1);
map.put("msg", "未授权,请联系管理员");
return map;
}
}
6,修改springmvc.xml开启shiro注解
<!-- 扫描异常监视器 -->
<context:component-scan base-package="com.sxt.aspect"></context:component-scan>
<!-- 启动Shrio的注解 -->
<bean id="lifecycleBeanPostProcessor"
class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
<bean
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
depends-on="lifecycleBeanPostProcessor" />
<bean
class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager" />
</bean>