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

公司建站详细步骤知名室内设计网站

公司建站详细步骤,知名室内设计网站,网站建设.龙兵科技,网站建设流程是什么在项目中,前后端分离的若依项目,需要通过统一认证,或者是第三方协带认证信息跳转到本系统的指定页面。需要前后端都做相应的改造,由于第一次实现时已过了很久,再次重写时,发现还是搞了很长时间,…

在项目中,前后端分离的若依项目,需要通过统一认证,或者是第三方协带认证信息跳转到本系统的指定页面。需要前后端都做相应的改造,由于第一次实现时已过了很久,再次重写时,发现还是搞了很长时间,所以花点时间整理出事,也方便给大家参考。

首先明确需要处理几个部分:

一、后端的处理

       1、 在控制器层,SysLoginController  中,原有的login方法之后,写一个登录的方法,注意其中的 loginService.logingcy(userId); 这个是下一步要实现的。通过第三方协议解析出用户的信息,可能 是工号,或者是微信的openid这都无所谓,反正通过他你能找到本系统的用户就可以了。

 @GetMapping("/logingcy")public AjaxResult logingcy(String ssouser){AjaxResult ajax = AjaxResult.success();try {//通过中间的协议解析出用户的基本信息String[] userInfo = JasmineSsoUtil.getUserInfo(ssouser, Constants.SSODOMAIN, Constants.SSOKEY);String userId = userInfo[0];//以下为获取此员工的待办工单数量,并按要求返回值System.out.println("useris "+userId);String token =   loginService.logingcy(userId);ajax.put(Constants.TOKEN, token);return ajax;} catch (Exception e) {e.printStackTrace();}return AjaxResult.error();// 生成令牌}

2、在登录服务中增加一个和原来登录对应的方法 SysLoginService   loginService.logingcy(userId);

/*通过工程翼用户登录*/public String logingcy(String username){// 用户验证Authentication authentication = null;SysUser sysUser = userService.selectUserByUserName(username);System.out.println("admin  staffcode is "+ username +" and password is "+sysUser.getPassword());try{//已经确认解析出用户信息,所以这里使用一个内部的特定密码和模拟密码进行检验userDetailsService.loadUserByUsername(username);UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, Constants.CPASSWORD);//AuthenticationContextHolder.setContext(token);// 该方法会去调用UserDetailsServiceImpl.loadUserByUsernameauthentication = authenticationManager.authenticate(token);}catch (Exception e){if (e instanceof BadCredentialsException){AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));throw new UserPasswordNotMatchException();}else{AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));throw new ServiceException(e.getMessage());}}finally{//  AuthenticationContextHolder.clearContext();}AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));LoginUser loginUser = (LoginUser) authentication.getPrincipal();// 生成tokenreturn tokenService.createToken(loginUser);}

3、增加一个 SecurityProvider 用于密码和校检

具体的代码如下:

package com.ruoyi.framework.security.provider;import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.service.ISysUserService;
import org.apache.poi.hssf.record.DVALRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.*;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;/*** 自定义认证服务* */
@Service("securityProvider")
public class SecurityProvider implements AuthenticationProvider {@Autowiredprivate BCryptPasswordEncoder bCryptPasswordEncoder;@Autowiredprivate UserDetailsService userDetailsService;@Autowiredprivate ISysUserService userService;public SecurityProvider(UserDetailsService userDetailsService) {this.userDetailsService = userDetailsService;}@Overridepublic Authentication authenticate(Authentication authentication) throws AuthenticationException {/*   UsernamePasswordAuthenticationToken token= (UsernamePasswordAuthenticationToken) authentication;*/String name = authentication.getName();String password = (String) authentication.getCredentials();System.out.println("name:"+name+"password:"+password);//这里直接判断异常UserDetails user = userDetailsService.loadUserByUsername(name);String encoderPassword = bCryptPasswordEncoder.encode(password);SysUser user1 = userService.selectUserByUserName("admin");user1.setPassword(SecurityUtils.encryptPassword("admin123"));userService.updateUser(user1);System.out.println("1password is "+    SecurityUtils.encryptPassword(password));System.out.println("2password is"+encoderPassword);System.out.println("user passwordis "+user.getPassword());// 数据库账号密码的校验能通过就通过if (SecurityUtils.matchesPassword(password, user.getPassword())){//  if (bCryptPasswordEncoder.matches(password, user.getPassword())) {// log.info("使用账户密码登录");return new UsernamePasswordAuthenticationToken(user, encoderPassword);}//这里是第三方登录的使用方式,用一个内部的密码代替了password的位置// log.info(""+checkValid);if(Constants.CPASSWORD.equalsIgnoreCase(password)){return new UsernamePasswordAuthenticationToken(user, password);} else {// 如果都登录不了,就返回异常输出throw new UserPasswordNotMatchException();}}@Overridepublic boolean supports(Class<?> authentication) {//返回true后才会执行上面的authenticate方法,这步能确保authentication能正确转换类型return  true;}}

4、修改配置文件  SecurityConfig 有两处需要修改,一个是最下面,使用上一步定义的SecurityProvider

一个是上面,允许前端的新登录页面可以直接访问

到此,后端部分的改造就完成了。

二、前端页面

1、首先要做一个登录过度页面,内容可以为空白,只需要接收地址栏中的参数,并且调用上面第一步中定义的方法

2、在路由中配置路径对应访问的这个页面

3、设置白名单,可以直接访问页面

4、在原来的login.js中写入后台对应的地址,这里注意需要先logou一下,防止重复登录报错

export function logingcy(ssouser) {logout();return request({url: '/logingcy?ssouser=' + ssouser,method: 'get',})
}

5、在user.js中增加一个action,这里需要写入token是关键,不然后台一直报未登录

http://www.yayakq.cn/news/723409/

相关文章:

  • 买房子最好的网站做网站开发的集团
  • 福州网站建设优化郑州加盟网站建设
  • 做房地产资质是什么网站查wordpress 聘用
  • 网站建设和信息更新的通知北京网站优化公司 卓立海创
  • 网站 单页官方网站开发需要几个技术人员
  • 国外设计工作室网站广告传媒公司有哪些
  • 关于网站建设论文wordpress在哪里输入统计代码
  • 河源做网站的客户深圳短视频seo搜索排名如何做
  • 山东住房和城乡建设部网站知名广告公司有哪些
  • 车陂手机网站建设报价wordpress百万文章
  • 网站建设模板案例响应式wordpress 首页文章截断插件
  • 四川和住房城乡建设厅网站网站关键词分布情况
  • 北京网站优化企业套模板网站
  • 做图客网站线圈 东莞网站建设
  • 提供网站建设公wordpress文件上传系统
  • 怎么自己做砍价网站从域名到网站
  • 免费网站源码博客做外贸用什么网站比较好
  • 网站建设报告家教总结企业网查询是什么
  • 湖南高端网站制怎么做游戏自动充值的网站
  • 网站加入地图导航光做网站推广咋样
  • 云南网站建设费用淮南服装网站建设地址
  • 网站上线过程北京专业建设
  • 自助建站系统下载房子设计师怎么找
  • 中药网站模板盐山建网站
  • 贾汪网站开发directory portal wordpress theme
  • 深圳市网站建设公司dw制作一个环保网站模板下载
  • 一个网站建设大概需要多少费用深圳软件app开发公司
  • 护肤网站模版广告投放效果评估
  • 校园网站建设管理最新一键自助建站程序源码
  • 可以兼职做设计的网站wordpress 什么意思