Webアプリケーションの全スタックの旅-Spring編(一)分布式Session


一、分布式SessionのRedis実現
マイクロサービスアーキテクチャの下では、分散Sessionをサポートする必要があり、分散SessionはRedisによって実現されてもよく、データベースによって実現されてもよく、本明細書ではRedisによって実現される。
二、Redisをインストールする
ダウンロード先:https://github.com/MSOpenTech... 対応するバージョンのインストールを選択します。
インストールディレクトリに入り、Redisを起動します。
三、pomファイル
        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
        
            org.springframework.session
            spring-session-data-redis
        

        
            org.apache.commons
            commons-pool2
        
四、yml配置
ymlの設定は以下の通りです
# Redis     
spring.redis.host=localhost
# Redis       
spring.redis.port=6379
五、Config配置
configの構成は以下の通りです。
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400 * 30)
public class SessionConfig {

}
六、ログイン後にSessionを設定する
ログイン成功後にSession情報を設定します。コードは以下の通りです。
@Component
@RestController
public class LoginController {

    @RequestMapping("/login")
    public String login(@RequestBody String userId, HttpSession  session) throws Exception {
        session.setAttribute(Constants.SESSION_USER_ID, userId);
        return "Login success.";
    }
}
七、Session認証フィルタ
ログインに成功していません。Sessionを設定するには、エラーページにジャンプする必要があります。コードの例は以下の通りです。
@Configuration
public class SessionFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {

        if (isNeedAuth(request)) {
            Object userIdObject = request.getSession().getAttribute(Constants.SESSION_USER_ID);
            if (null == userIdObject) {
                response.sendRedirect("/errorPage");
            }
        }

        filterChain.doFilter(request, response);
    }
}
以上はRedis Sessionのすべてのステップを実現するために、完全なインスタンスコードのスキャンコードはWeChat公衆番号に加入し、返信:webfullstack、倉庫アドレスを取得する。
end.
サイト:http://javashizhan.com/
WeChat公式アカウント:
知識の星に参加して、討論に参加して、更に多くの実戦のコードは分かち合います!https://t.zsxq.com/RNzfi2j