数据库第二次大作业boostore
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

149 lines
4.1 KiB

<!DOCTYPE html>
<html id="htmlId">
<head>
<title>Coverage Report > AuthenticationFilter</title>
<style type="text/css">
@import "../../css/coverage.css";
@import "../../css/idea.min.css";
</style>
<script type="text/javascript" src="../../js/highlight.min.js"></script>
<script type="text/javascript" src="../../js/highlightjs-line-numbers.min.js"></script>
</head>
<body>
<div class="content">
<div class="breadCrumbs">
Current scope: <a href="../../index.html">all classes</a>
<span class="separator">|</span>
<a href="../index.html">cn.edu.ecnu.stu.bookstore.filter</a>
</div>
<h1>Coverage Summary for Class: AuthenticationFilter (cn.edu.ecnu.stu.bookstore.filter)</h1>
<table class="coverageStats">
<tr>
<th class="name">Class</th>
<th class="coverageStat
">
Class, %
</th>
<th class="coverageStat
">
Method, %
</th>
<th class="coverageStat
">
Line, %
</th>
</tr>
<tr>
<td class="name">AuthenticationFilter</td>
<td class="coverageStat">
<span class="percent">
100%
</span>
<span class="absValue">
(1/1)
</span>
</td>
<td class="coverageStat">
<span class="percent">
100%
</span>
<span class="absValue">
(3/3)
</span>
</td>
<td class="coverageStat">
<span class="percent">
100%
</span>
<span class="absValue">
(12/12)
</span>
</td>
</tr>
</table>
<br/>
<br/>
<pre>
<code class="sourceCode" id="sourceCode">&nbsp;package cn.edu.ecnu.stu.bookstore.filter;
&nbsp;
&nbsp;import cn.edu.ecnu.stu.bookstore.pojo.User;
&nbsp;import cn.edu.ecnu.stu.bookstore.utils.JwtUtil;
&nbsp;import org.springframework.beans.factory.annotation.Autowired;
&nbsp;import org.springframework.data.redis.core.RedisTemplate;
&nbsp;import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
&nbsp;import org.springframework.security.core.context.SecurityContextHolder;
&nbsp;import org.springframework.stereotype.Component;
&nbsp;import org.springframework.util.StringUtils;
&nbsp;import org.springframework.web.filter.OncePerRequestFilter;
&nbsp;
&nbsp;import javax.servlet.FilterChain;
&nbsp;import javax.servlet.ServletException;
&nbsp;import javax.servlet.http.HttpServletRequest;
&nbsp;import javax.servlet.http.HttpServletResponse;
&nbsp;import java.io.IOException;
&nbsp;
&nbsp;@Component
<b class="fc">&nbsp;public class AuthenticationFilter extends OncePerRequestFilter {</b>
&nbsp;
&nbsp; @Autowired
&nbsp; private RedisTemplate redisTemplate;
&nbsp;
&nbsp; private boolean hasLogin(Integer userId) {
<b class="fc">&nbsp; String s = (String)redisTemplate.opsForValue().get(&quot;userId:&quot; + userId);</b>
<b class="fc">&nbsp; return StringUtils.hasText(s);</b>
&nbsp; }
&nbsp;
&nbsp; @Override
&nbsp; protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
<b class="fc">&nbsp; String token = request.getHeader(&quot;token&quot;);</b>
<b class="fc">&nbsp; if(!StringUtils.hasText(token)){</b>
<b class="fc">&nbsp; filterChain.doFilter(request, response);</b>
&nbsp; return;
&nbsp; }
<b class="fc">&nbsp; User user = (User) JwtUtil.getTokenInfo(token, User.class);</b>
<b class="fc">&nbsp; if(!hasLogin(user.getId())) {</b>
<b class="fc">&nbsp; filterChain.doFilter(request, response);</b>
&nbsp; return;
&nbsp; }
<b class="fc">&nbsp; UsernamePasswordAuthenticationToken token1 = new UsernamePasswordAuthenticationToken(user, null, null);</b>
<b class="fc">&nbsp; SecurityContextHolder.getContext().setAuthentication(token1);</b>
<b class="fc">&nbsp; filterChain.doFilter(request, response);</b>
&nbsp; }
&nbsp;}
</code>
</pre>
</div>
<script type="text/javascript">
(function() {
var msie = false, msie9 = false;
/*@cc_on
msie = true;
@if (@_jscript_version >= 9)
msie9 = true;
@end
@*/
if (!msie || msie && msie9) {
hljs.highlightAll()
hljs.initLineNumbersOnLoad();
}
})();
</script>
<div class="footer">
<div style="float:right;">generated on 2023-12-12 14:34</div>
</div>
</body>
</html>