亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springboot2.X如何解決單點登陸

發布時間:2021-09-28 09:13:07 來源:億速云 閱讀:149 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關Springboot2.X如何解決單點登陸,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1、pom文件依賴
<dependency>
    <groupId>com.majiaxueyuan</groupId>
    <artifactId>sso-core</artifactId>
    <version>1.2.2</version>
</dependency>
2、sso配置文件

    由于使用的是springboot2.2.0版本,所以配置需要實現WebMvcConfigurer

import com.majiaxueyuan.sso.core.filter.MaJiaSSOIntercepter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Author:MuJiuTian
 * @Description: 單點登陸配置WebMvcConfigurer
 * @Date: Created in 下午5:34 2019/10/21
 */
@Configuration
public class SsoConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(ssoIntercepter()).addPathPatterns("/**");
    }

    @Bean
    public MaJiaSSOIntercepter ssoIntercepter() {
        return new MaJiaSSOIntercepter().setTokenSalt("pwd_salt");
    }
}

    如果是其他版本可以使用集成WebMvcConfigurerAdapter

import com.majiaxueyuan.sso.core.filter.MaJiaSSOIntercepter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * @Author:MuJiuTian
 * @Description: 單點登陸配置WebMvcConfigurerAdapter
 * @Date: Created in 下午5:34 2019/10/21
 */
@Configuration
public class SsoConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(ssoIntercepter()).addPathPatterns("/**");
    }

    @Bean
    public MaJiaSSOIntercepter ssoIntercepter() {
        return new MaJiaSSOIntercepter().setTokenSalt("pwd_salt");
    }
}

3、實體類

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int userId;
    private String slat;
    private String account;
    // ....其他的字段就不寫了
}
4、service邏輯層
/**
 * @Author:MuJiuTian
 * @Description: 簡單測試,我就不寫接口了,直接以class的形式
 * @Date: Created in 下午5:47 2019/10/21
 */
@Service
public class LoginService {

    public User checkUser(String account, String pwd){
        // 做假數據,加入密碼登陸成功,返回user實體類
        return new User(1,account,"ewdsbj");
    }
}
5、controller層
import com.majiaxueyuan.sso.core.annotation.NoToken;
import com.majiaxueyuan.sso.core.constans.Result;
import com.majiaxueyuan.sso.core.helper.TokenLoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author:MuJiuTian
 * @Description: 測試單點登錄框架
 * @Date: Created in 下午5:25 2019/10/21
 */
@RestController
public class LoginController {

    @Autowired
    LoginService loginService;

    @GetMapping(value = "/testToken")
    public String testToken() {
        return "需要token";
    }

    @GetMapping(value = "/login")
    @NoToken(notNeedToken = true)
    public String login(String account, String password) {

        // 測試用戶輸入的用戶名、密碼是否正確
        User user = loginService.checkUser(account, password);
        if (user == null){
            return "密碼錯誤";
        }

        // 如果密碼成功后,獲取用戶主鍵id、以及注冊時的salt
        Long user_id = Long.valueOf(user.getUserId());
        String salt  = user.getSlat();

        // 然后通過sso-core框架獲取token
        Result loginSuccess = TokenLoginHelper.loginSuccess(user_id,account,"",salt);

        // 獲取token
        String token = "";
        if (loginSuccess.getCode() == 200){
            token = loginSuccess.getData().toString();
        }
        return token;
    }
}
6、測試

測試接口1:

Springboot2.X如何解決單點登陸

測試接口2:

Springboot2.X如何解決單點登陸

7、獲取request用戶對象

      用戶獲取到Token之后,返回給前端,前端攜帶時需要將Token添加到Header中的Authorization字段。當前強制使用此請求頭字段,這些數據存儲headers中帶過來檢測token是否過期或者登陸...情況。

SSOUser user = (SSOUser) request.getAttribute("ssoUser");
8、@NoToken

      當有某個請求不需要認證即可訪問時,在此請求方法上添加注解@NoToken,不加注解需要驗證,只要加上注解就表示不需要認證,不管@NoToken(notNeedToken = true)還是@NoToken(notNeedToken = false),都不需要驗證,至少在目前最新1.2.2版本是這樣。

上述就是小編為大家分享的Springboot2.X如何解決單點登陸了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰溪市| 楚雄市| 石屏县| 公主岭市| 焦作市| 确山县| 龙陵县| 华蓥市| 筠连县| 泰和县| 遵化市| 林周县| 漯河市| 两当县| 尼玛县| 彭州市| 廊坊市| 荔波县| 东丰县| 红原县| 墨玉县| 集贤县| 临安市| 独山县| 类乌齐县| 屏东市| 宜兰县| 常州市| 重庆市| 徐州市| 柳河县| 齐齐哈尔市| 武城县| 福建省| 磐石市| 宿松县| 肃北| 美姑县| 城口县| 洮南市| 新营市|