当前位置: 首页 > news >正文

学会网站开发有什么好处网页设计与制作课程教学总结

学会网站开发有什么好处,网页设计与制作课程教学总结,建设网站需要从哪方面考虑,目前哪些企业需要做网站建设的呢2019独角兽企业重金招聘Python工程师标准 要进行单设备登录#xff0c;在其他地点登录后#xff0c;本地的其他操作会被拦截返回登录界面。 原理就在于要在登录时在redis中存储Session,进行操作时要进行Session的比对。 具体实现#xff0c;假设我们的OAuth 2… 2019独角兽企业重金招聘Python工程师标准 要进行单设备登录在其他地点登录后本地的其他操作会被拦截返回登录界面。 原理就在于要在登录时在redis中存储Session,进行操作时要进行Session的比对。 具体实现假设我们的OAuth 2的登录调用接口如下 共享Session,User模块跟OAuth模块都要设置 Configuration EnableRedisHttpSession public class SessionConfig {} Feign Component FeignClient(oauth-center) public interface Oauth2Client {/*** 获取access_tokenbr* 这是spring-security-oauth2底层的接口类TokenEndpointbr** param parameters* return* see org.springframework.security.oauth2.provider.endpoint.TokenEndpoint*/PostMapping(path /api-o/oauth/token)MapString, Object postAccessToken(RequestParam MapString, String parameters);/*** 删除access_token和refresh_tokenbr* 认证中心的OAuth2Controller方法removeToken** param access_token*/DeleteMapping(path /api-o/remove_token)void removeToken(RequestParam(access_token) String access_token);} Controller /*** Created by Administrator on 2018/10/19.*/ Slf4j RestController public class UserTokenController {Autowiredprivate Oauth2Client oauth2Client;Resourceprivate RedisService redisServiceImpl;/*** 系统登陆br* 根据用户名登录br* 采用oauth2密码模式获取access_token和refresh_token** param loginParam* return*/PostMapping(/users-anon/sys/logins)public MapString, Object login(RequestBody LoginParam loginParam,HttpServletRequest request) {MapString, String parameters new HashMap();parameters.put(OAuth2Utils.GRANT_TYPE, password);parameters.put(OAuth2Utils.CLIENT_ID, system); // parameters.put(OAuth2Utils.CLIENT_ID, system);parameters.put(client_secret, system);parameters.put(OAuth2Utils.SCOPE, app); // parameters.put(username, username);// 为了支持多类型登录这里在username后拼装上登录类型parameters.put(username, loginParam.getUsername() | CredentialType.USERNAME.name());parameters.put(password, loginParam.getPassword());parameters.put(status,200);MapString, Object tokenInfo null;try {tokenInfo oauth2Client.postAccessToken(parameters);}catch (Exception e){e.printStackTrace();return ResponseUtils.getResult(500,login failed);} // saveLoginLog(username, 用户名密码登陆, BlackIPAccessFilter.getIpAddress(request));return ResponseUtils.getDataResult(tokenInfo);} } 加入Session的存储 /*** Created by Administrator on 2018/10/19.*/ Slf4j RestController public class UserTokenController {Autowiredprivate Oauth2Client oauth2Client;Resourceprivate RedisService redisServiceImpl;/*** 系统登陆br* 根据用户名登录br* 采用oauth2密码模式获取access_token和refresh_token** param loginParam* return*/ PostMapping(/users-anon/sys/logins)public MapString, Object login(RequestBody LoginParam loginParam, HttpServletRequest request) {MapString, String parameters new HashMap();parameters.put(OAuth2Utils.GRANT_TYPE, password);parameters.put(OAuth2Utils.CLIENT_ID, system); // parameters.put(OAuth2Utils.CLIENT_ID, system);parameters.put(client_secret, system);parameters.put(OAuth2Utils.SCOPE, app); // parameters.put(username, username);// 为了支持多类型登录这里在username后拼装上登录类型parameters.put(username, loginParam.getUsername() | CredentialType.USERNAME.name());parameters.put(password, loginParam.getPassword());parameters.put(status,200);MapString, Object tokenInfo null;try {tokenInfo oauth2Client.postAccessToken(parameters);HttpSession session request.getSession();String sessionId UUID.randomUUID().toString();//此处修改为共享Sessionsession.setAttribute(sessionId, sessionId);session.setAttribute(username,loginParam.getUsername());String key loginParam.getUsername() -onlyLogin;redisServiceImpl.set(key,sessionId);redisServiceImpl.expire(key,30 * 60);redisServiceImpl.hset(sessionHash,sessionId,loginParam.getUsername());}catch (Exception e){e.printStackTrace();return ResponseUtils.getResult(500,login failed);} // saveLoginLog(username, 用户名密码登陆, BlackIPAccessFilter.getIpAddress(request));return ResponseUtils.getDataResult(tokenInfo);} } 配置拦截器 Slf4j Component public class RedisInterceptor extends HandlerInterceptorAdapter {Resourceprivate RedisService redisServiceImpl;Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, Nullable ModelAndView modelAndView) throws Exception {}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Nullable Exception ex) throws Exception {}Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session request.getSession();//读取共享SessionString requestedSessionId (String) session.getAttribute(sessionId);String userName null;response.setCharacterEncoding(utf-8);response.setContentType(text/javascript;charsetutf-8);try {if (!StringUtils.isEmpty(requestedSessionId)) {userName redisServiceImpl.hget(sessionHash, requestedSessionId);}if (StringUtils.isEmpty(userName)) {response.getWriter().write({\message\:\请先登陆\});return false;} else {String cacheSessionId null;String sessionKey userName -onlyLogin;try {cacheSessionId redisServiceImpl.get(sessionKey);} catch (Exception e) {e.printStackTrace();}if (StringUtils.isEmpty(cacheSessionId)) {response.getWriter().write({\message\:\请先登陆\});return false;} else {if (!cacheSessionId.equals(requestedSessionId)) {response.getWriter().write({\message\:\您的账号已在别处登陆,请重新登陆\});return false;} else {redisServiceImpl.expire(sessionKey, 30 * 60);return super.preHandle(request, response, handler);}}}}catch (Exception e) {e.printStackTrace();}response.getWriter().write({\message\:\服务器忙\});return false;} } 拦截器就是为了获取每次的Session并且跟redis中的session进行比对如果session不同则进行拦截。 Configuration public class RedisSessionConfig extends WebMvcConfigurerAdapter {Autowiredprivate RedisInterceptor redisInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(redisInterceptor).excludePathPatterns(/**/users-anon/**).excludePathPatterns(/api-o/oauth/token);super.addInterceptors(registry);} } 这里要配置对登录的url以及feign的url进行放行则可以对多地点登录时使之前的登录无法操作。 转载于:https://my.oschina.net/u/3768341/blog/2885756
http://www.zqtcl.cn/news/13860/

相关文章:

  • 电子商务网站建设清华大学百度建立企业网站建设的目的
  • 网站制作论文总结微信小程序哪里找
  • 河南住房城乡建设厅官方网站建网站需要的费用
  • 如何免费做网站 详细点说东莞市建设工程信息服务协会
  • 广州做购物网站澄江网站制作
  • 网站ico图标 代码icp备案查询官网
  • 如何自学网站开发阳春网站开发
  • 怎么建个人网站asp开发网站详细步骤
  • 阿里云1m宽带做网站卡吗中国纪检监察报app下载
  • 厦门网站建设咨询网站平台开发报价单
  • 北京市政建设集团有限责任公司网站广州市酒店网站设计
  • 网站建设属于应用软件吗广东省建设监理协会信息管理网站
  • 建设银行手机不用了怎么登陆网站wordpress 添加评论等级
  • 北京网站建设费用黄骅贴吧李官庄刘婷
  • 企业网站如何建设和推广手机网站后台源码
  • 写作网站免费wordpress目录加图标
  • 河源市住房和城乡建设局网站个人建什么网站最赚钱
  • 网站文章发布陕西网站建设优化技术
  • 青岛网站排名公司模板建站可以做优化吗
  • 杭州 网站程序泰安网站设计公司
  • wordpress网站文件目录阿里云腾讯云网站建设
  • 清河网站制作毕业设计动漫网页设计
  • 东胜区教育网站入口手机网站打不开被拦截怎么办
  • 网站建设规划书深圳龙华的学校网站建设
  • 网站报备流程专业的门户网站建设方案
  • 河北省住房建设厅政务网站怎么自己免费制作app
  • 小企业网站建设地点厦门建设厅查询网站
  • 电商网站建设内容规划常德网站设计字答科技
  • 深圳网站建设 案例凡科手机网站建设开发
  • 宏重钢结构东莞网站建设网页设计文献