背景:
springmvc项目,前后端分离,使用shiro来鉴权。问题:
第一、返回数据要是json格式,第二、要跨域。搜索了一天多,总共找到两种方案:
一、对所有的controller接口捕捉shiro异常,然后返回json。
二、重写shiro的过滤器,判断是否是ajax请求,然后分别返回json或者跳转页面。我很好奇,shiro这么diao的一个项目,没有一种更加优雅的实现跨域返回json的方式么?就不能通过两三行的配置来实现么?谁有好的解决方案,望分享。谢谢

解决方案 »

  1.   

    三种解决方案:
      1.jsonp实现跨域
      2.利用haproxy 或者 Nginx 实现反向代理,从而实现跨域
      3.不直接通过ajax请求,shiro服务那边暴露出接口,通过本程序后端访问接口,ajax直接请求本程序的接口
      

  2.   


    谢谢。跨域已经实现,shiro鉴权也已经实现。就是结合到一起有写问题,shiro没有权限是直接跳转,而我这里是ajax请求的,肯定不能跳转页面,需要返回json,目前是通过重写shiro的filter来实现的,有没有什么方法可以更便捷的返回json.
      

  3.   


    谢谢。跨域已经实现,shiro鉴权也已经实现。就是结合到一起有写问题,shiro没有权限是直接跳转,而我这里是ajax请求的,肯定不能跳转页面,需要返回json,目前是通过重写shiro的filter来实现的,有没有什么方法可以更便捷的返回json.
    请问应该怎么实现,我shiro为什么总是要登录,是sessionid的问题吗
      

  4.   

    可以使用@ControllerAdvice,@ExceptionHandler注解写一个异常跳转页面或者返回json。
      

  5.   

    shiro不是有jssesionId么,请求的时候在请求头添加了这个不就可以了么??
    我们的后台也是shiro的,没有前后台分离,但是有android端app,而且还有客户需要从我们服务器获取数据,直接给人用的是完整的接口url,都没问题啊