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

武进网站建设哪家好职业培训网

武进网站建设哪家好,职业培训网,学校网站怎么做的好坏,好看的学校网站模板需求#xff1a;对接第三方登陆#xff0c;实现绕过原有Shiro认证登陆。 文章目录一、实现思路1. 现状分析2. 用户来源3. 所属范围二、实现方案2.1. 自定义登录认证规则2.2. Shiro认证枚举2.3. 密码和非密码登录2.4. 规则配置2.5. 自定义Realm2.6. 案例使用一、实现思路 1. … 需求对接第三方登陆实现绕过原有Shiro认证登陆。 文章目录一、实现思路1. 现状分析2. 用户来源3. 所属范围二、实现方案2.1. 自定义登录认证规则2.2. Shiro认证枚举2.3. 密码和非密码登录2.4. 规则配置2.5. 自定义Realm2.6. 案例使用一、实现思路 1. 现状分析 系统权框架默认使用Shiro 认证授权机制 2. 用户来源 从统一认证平台登录跳转过来的用户 3. 所属范围 登录限制由统一认证平台去做但是跳转过来的用户仍然走您本系统的登录流程只是走本系统的登录流程时想跳过Shiro 对用户密码的校验校验所属范围为Shiro 认证机制其他功能照旧 二、实现方案 2.1. 自定义登录认证规则 package com.gblfy.config.skipshiro;import com.gblfy.config.skipshiro.enums.ShiroApproveLoginType; import org.apache.shiro.authc.UsernamePasswordToken;/*** 自定义token 实现免密和密码登录* p* 1.账号密码登陆password* 2.免密登陆nopassword* /p** author gblfy* date 2021-10-22*/ public class EasyUsernameToken extends UsernamePasswordToken {private static final long serialVersionUID -2564928913725078138L;private ShiroApproveLoginType type;public EasyUsernameToken() {super();}/*** 免密登录*/public EasyUsernameToken(String username) {super(username, , false, null);this.type ShiroApproveLoginType.NOPASSWD;}/*** 账号密码登录*/public EasyUsernameToken(String username, String password, boolean rememberMe) {super(username, password, rememberMe, null);this.type ShiroApproveLoginType.PASSWORD;}public ShiroApproveLoginType getType() {return type;}public void setType(ShiroApproveLoginType type) {this.type type;}} 2.2. Shiro认证枚举 package com.gblfy.config.skipshiro.enums;/*** Shiro认证枚举* author gblfy* date 2021-10-22*/ public enum ShiroApproveLoginType {/** 密码登录 */PASSWORD(PASSWORD),/** 密码登录 */NOPASSWD(NOPASSWORD);/** 状态值 */private String code;private ShiroApproveLoginType(String code) {this.code code;}public String getCode() {return code;} } 2.3. 密码和非密码登录 package com.gblfy.config.skipshiro;import com.gblfy.config.skipshiro.enums.ShiroApproveLoginType; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.credential.HashedCredentialsMatcher;/*** 自定义登录认证方案* p* 1.免密登录不加密* 2.密码登录md5加密* /p** author gblfy* date 2021-10-22*/ public class EasyCredentialsMatch extends HashedCredentialsMatcher {/*** 重写方法* 区分 密码和非密码登录* 此次无需记录登录次数 详情看SysPasswordService*/Overridepublic boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {EasyUsernameToken easyUsernameToken (EasyUsernameToken) token;//免密登录,不验证密码if (ShiroApproveLoginType.NOPASSWD.equals(easyUsernameToken.getType())) {return true;}//密码登录Object tokenHashedCredentials hashProvidedCredentials(token, info);Object accountCredentials getCredentials(info);return equals(tokenHashedCredentials, accountCredentials);} } 2.4. 规则配置 Beanpublic EasyCredentialsMatch customCredentialsMatch() {EasyCredentialsMatch customCredentialsMatch new EasyCredentialsMatch();customCredentialsMatch.setHashAlgorithmName(md5);customCredentialsMatch.setHashIterations(3);customCredentialsMatch.setStoredCredentialsHexEncoded(true);return customCredentialsMatch;}2.5. 自定义Realm 权限认证 保持默认修改登录认证 public class UserRealm extends AuthorizingRealm {/*** 权限认证 */Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {//权限认证 代码省略}/*** 登录认证*/Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {EasyUsernameToken upToken (EasyUsernameToken) token;String username upToken.getUsername();SysUser user null;// 密码登录if (upToken.getType().getCode().equals(LoginType.PASSWORD.getCode())) {String password;if (upToken.getPassword() ! null) {password new String(upToken.getPassword());try {user loginService.login(username, password);} catch (Exception e) {log.info(对用户[ username ]进行登录验证..验证未通过{}, e.getMessage());throw new AuthenticationException(e.getMessage(), e);}}} else if (upToken.getType().getCode().equals(LoginType.NOPASSWD.getCode())) {// 第三方登录 TODO}SimpleAuthenticationInfo info new SimpleAuthenticationInfo(user, upToken.getPassword(), getName());return info;} }2.6. 案例使用 public AjaxResult login(String username, String password, Boolean rememberMe) {EasyUsernameToken token new EasyUsernameToken(username, password, rememberMe);Subject subject SecurityUtils.getSubject();try {subject.login(token);return success();} catch (AuthenticationException e) {String msg 用户或密码错误;if (StringUtils.isNotEmpty(e.getMessage())) {msg e.getMessage();}return error(msg);}}
http://www.zqtcl.cn/news/748153/

相关文章:

  • 网站编辑属于什么行业义乌做网站哪家好
  • 沂水网站开发移动知识库管理系统
  • 成都有哪些网站建设的公司河南网站建设优化推广
  • 小说投稿赚钱的网站网站后台管理系统多少钱
  • 中国建设银行国际互联网网站网站是用什么做的
  • 做建设网站的活的兼职网络推广专员的岗位职责是
  • 韩国 网站设计保定网站开发公司
  • 发外链的网站都要企业注册网站建设的基本概念
  • 网站管理员有哪些权限中文域名网站好不好优化
  • wordpress主题 资源站关闭wordpress自动更新
  • 网站排名怎么上去创建全国文明城市我们应该怎么做
  • 网站 ftp自助建站信息网
  • 做珠宝的网站wordpress获取相关文章
  • 网站开发视频 百度云视频资源的网站怎么做
  • 写出网站建设的基本流程鹤山市城乡住房建设部网站
  • 万网域名注册后如何做网站教学网络传奇游戏
  • 岳阳网站建设方案免费网站模板建设
  • 郑州响应式网站制作如何做公众号微信
  • 专业公司网站建设精准引流推广团队
  • 蔡甸建设局网站怎么用云校建设学校网站
  • 建立网站需要哪些东西软件开发流程包括
  • 网站的pdf目录怎么做的网站编写
  • 南宫企业做网站wordpress图片显示距离
  • 青岛红岛做网站百度怎么打广告
  • 凡科建站怎么建网站网络搭建是什么工作
  • wordpress支持国内视频的编辑器网站优化排名软件网站
  • 建设摩托官方网站南京做网站群的公司
  • 晋城城乡建设局网站设计网站公司选泽y湖南岚鸿询 问
  • 思坎普网站建设湘潭网站推广
  • 北京网站建设公司哪个最好做投标网站条件