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 [email protected]

* @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: 登录用户的身份鉴权

你可能感兴趣的:(c#生成token访问的接口)