c#生成token访问的接口_前后端分离之接口登陆权限token

随着业务的需求普通的springmvc+jsp已经不能满足我们的系统了,会逐渐把后台和前端展示分离开来,下面我们就来把普通的springmvc+jsp分为 springmvc只提供rest接口,前端用ajax请求接口渲染到html中。

后台提供接口是一个tomcat服务器

前台访问数据是nginx访问rest接口

但是有一个问题 ,发现没有。就是两个是不同的域名,所以存在跨域,下面我会把一些关键的代码贴出来。

首先解决接口访问跨域的问题。

自定义一个拦截请求的Filter

/*** post 跨域拦截

* @Project: children-watch-web-api

* @Class JsonpPostFilter

* @Description: TODO

*@authorcd 14163548@qq.com

* @date 2018年1月10日 下午4:12:11

*@versionV1.0*/@Componentpublic class JsonpPostFilter implementsFilter {

@Overridepublic void init(FilterConfig filterConfig) throwsServletException {

}

@Overridepublic void doFilter(ServletRequest servletRequest,ServletResponse servletResponse, FilterChain filterChain)throwsIOException, ServletException {

HttpServletResponse response=(HttpServletResponse) servletResponse;//String origin = (String) servletRequest.getRemoteHost() + ":"+ servletRequest.getRemotePort();//构造头部信息

response.setHeader("Access-Control-Allow-Origin", "*");

response.setHeader("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE");

response.setHeader("Access-Control-Max-Age", "3600");

response.setHeader("Access-Control-Allow-Headers","x-requested-with,Authorization,X-Token");

response.setHeader("Access-Control-Allow-Credentials", "true");

filterChain.doFilter(servletRequest, servletResponse);

}

@Overridepublic voiddestroy() {

}

}

然后再配置web.xml

cors

com.axq.watch.web.api.config.JsonpPostFilter

cors

/*

这样就可以实现跨域访问了。

接下来就是登陆的问题,

思路:

1.用户输入账号密码,到后台查询,正确返回服务器生成的token,错误返回相应的错误信息。

2.用户拿到token保存到本地cookie.

3.用户要调用相应的接口需要把token传入头部。

4.后台获取访问的接口,看头部是否有token,在比对是否过期。

实现代码

token接口

/*** REST 鉴权

* @Project: children-watch-api

* @Class TokenService

* @Description: 登录用户的身份鉴权</

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值