<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                1、基于form表單的普通登錄方式 繼承org.walkframework.shiro.realm.BaseUserRealm ~~~ public class UserRealm extends BaseUserRealm { private Common common = SingletonFactory.getInstance(Common.class); /** * token支持類型定義 * * @param token * @return */ @Override public boolean support(AuthenticationToken token) { return token instanceof FormToken; } /** * 獲取用戶認證信息 * * @param token * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetUserAuthenticationInfo(BaseToken token){ FormToken formToken = (FormToken)token; String staffId = formToken.getUsername(); //從數據庫中獲取用戶信息 TdMStaffExt staffInfo = getUserService().findUser(staffId); if(staffInfo == null){ log.error("未知賬戶[{}]", staffId); throw new UnknownAccountException(); } //從數據庫中獲取部門信息 TdMDepart departInfo = getUserService().findOrganization(staffInfo.getDepartId()); //將用戶信息設置到自定義的principal中 StaffPrincipal principal = new StaffPrincipal(formToken); principal.setStaffId(staffInfo.getStaffId()); principal.setStaffName(staffInfo.getStaffName()); principal.setSerialNumber(staffInfo.getSerialNumber()); principal.setEparchyCode(staffInfo.getEparchyCode()); principal.setCityCode(staffInfo.getCityCode()); principal.setTeamCode(staffInfo.getTeamCode()); principal.setDepart(departInfo); //將身份信息設置到token中 token.setPrincipal(principal); //正常應該是取數據庫密碼staffInfo.getStaffPasswd()。此示例工程省略密碼校驗環節 //return new SimpleAuthenticationInfo(principal, staffInfo.getStaffPasswd(), getName()); return new SimpleAuthenticationInfo(principal, token.getCredentials(), getName()); } /** * 獲取用戶授權信息 * * @param principals * @return * @throws AuthenticationException */ @Override protected AuthorizationInfo doGetUserAuthorizationInfo(PrincipalCollection principals, SimpleAuthorizationInfo authorizationInfo) { StaffPrincipal principal = (StaffPrincipal)principals.getPrimaryPrincipal(); String staffId = principal.getStaffId(); try { //查詢用戶擁有角色列表 List<String> roles = getUserService().findRoles(staffId); authorizationInfo.addRoles(roles); //查詢用戶擁有權限列表 List<String> permissions = getUserService().findPermissions(staffId); authorizationInfo.addStringPermissions(permissions); TdMStaff staffInfo = getUserService().findUser(staffId); //系統管理員/地州管理員/省份管理員 if ("0".equals(staffInfo.getJobCode()) || "1".equals(staffInfo.getJobCode())) { authorizationInfo.addRole(RoleContants.EPARCHY_MANAGER); } //團隊長 else if ("2".equals(staffInfo.getJobCode()) && "1".equals(staffInfo.getIsTeamManager())){ authorizationInfo.addRole(RoleContants.TEAM_LEADER); } //客戶經理 else if ("2".equals(staffInfo.getJobCode()) && !"1".equals(staffInfo.getIsTeamManager())){ authorizationInfo.addRole(RoleContants.CUST_MANAGER); } } catch (Exception e) { common.error("獲取權限信息出錯!", e); } return authorizationInfo; } } ~~~ 2、基于CAS的單點登錄方式 繼承org.walkframework.shiro.realm.BaseCasRealm ~~~ public class SsoCasRealm extends BaseCasRealm { private Common common = SingletonFactory.getInstance(Common.class); /** * token支持類型定義 * * @param token * @return */ @Override public boolean support(AuthenticationToken token) { return token instanceof CasToken; } /** * 獲取用戶認證信息 * * @param token * @param casPrincipal * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetUserAuthenticationInfo(BaseToken token, AttributePrincipal casPrincipal) throws AuthenticationException { //從cas服務端取得用戶身份信息 IData<String, Object> staffInfo = new DataMap<String, Object>(); staffInfo.putAll(casPrincipal.getAttributes()); //將用戶信息設置到自定義的principal中 StaffPrincipal principal = new StaffPrincipal(token); principal.setStaffId(staffInfo.getString("STAFF_ID")); principal.setStaffName(staffInfo.getString("STAFF_NAME")); principal.setDepartId(staffInfo.getString("DEPART_ID")); principal.setDepartName(staffInfo.getString("DEPART_NAME")); principal.setDepartCode(staffInfo.getString("DEPART_CODE")); principal.setCityId(staffInfo.getString("CITY_CODE")); principal.setCityName(staffInfo.getString("CITY_NAME")); principal.setAreaCode(staffInfo.getString("AREA_CODE")); principal.setAreaName(staffInfo.getString("AREA_NAME")); principal.setEparchyCode(staffInfo.getString("EPARCHY_CODE")); principal.setEparchyName(staffInfo.getString("EPARCHY_NAME")); principal.setCucDepartId(staffInfo.getString("CUC_DEPART_CODE")); principal.setCucEparchyCode(staffInfo.getString("CUC_AREA_CODE")); principal.setProvinceId(staffInfo.getString("PROVINCE_ID")); principal.setProvinceCode(staffInfo.getString("PROVINCE_CODE")); principal.setCbssCheckCode(staffInfo.getString("cbssCheckCode")); //將身份信息設置到token中 token.setPrincipal(principal); return new SimpleAuthenticationInfo(principal, token.getCredentials(), getName()); } /** * 獲取用戶授權信息 * * @param principals * @param authorizationInfo * @return * @throws AuthenticationException */ @Override protected AuthorizationInfo doGetUserAuthorizationInfo(PrincipalCollection principals, SimpleAuthorizationInfo authorizationInfo) { StaffPrincipal principal = (StaffPrincipal)principals.getPrimaryPrincipal(); String staffId = principal.getStaffId(); try { //查詢用戶擁有角色列表 List<String> roles = getUserService().findRoles(staffId); authorizationInfo.addRoles(roles); //查詢用戶擁有權限列表 List<String> permissions = getUserService().findPermissions(staffId); authorizationInfo.addStringPermissions(permissions); } catch (Exception e) { common.error("獲取權限信息出錯!", e); } return authorizationInfo; } } ~~~ 3、基于靜默登錄的方式 繼承org.walkframework.shiro.realm.BaseSilenceLoginRealm ~~~ public class SilenceLoginRealm extends BaseSilenceLoginRealm { @Resource(name = "loginService") private LoginService loginService; /** * token支持類型定義 * * @param token * @return */ @Override public boolean support(AuthenticationToken token) { return token instanceof SilenceLoginToken; } /** * 獲取用戶認證信息 * * @param token * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetSilenceUserAuthenticationInfo(BaseToken token){ StaffPrincipal principal = new StaffPrincipal(token); SilenceLoginToken silenceToken = (SilenceLoginToken)token; final String staffId = silenceToken.getUsername(); IData<String, Object> retInfo = loginService.loginWosale(staffId, null, "2"); String result = retInfo.getString("result"); if("true".equals(result)){ principal.setStaffId(staffId); principal.setStaffName(retInfo.getString("staffName")); principal.setEparchyCode(retInfo.getString("eparchyId")); principal.setCityCode(retInfo.getString("cityId")); principal.setDepartId(retInfo.getString("departId")); principal.setDepartName(retInfo.getString("departName")); principal.setTokenId(retInfo.getString("sessionId")); } else { throw new IncorrectCredentialsException(retInfo.getString("info")); } //將身份信息設置到token中 token.setPrincipal(principal); return new SimpleAuthenticationInfo(principal, silenceToken.getSign(), getName()); } /** * 獲取用戶授權信息 * * @param principals * @return */ @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { return null; } /** * 獲取用戶授權信息 * * @param principals * @return */ @Override protected AuthorizationInfo doGetUserAuthorizationInfo(PrincipalCollection principals, SimpleAuthorizationInfo authorizationInfo) { return null; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看