public class JwtFilter
extends org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
AUTHENTICATE_HEADER, AUTHORIZATION_HEADER
DEFAULT_SUCCESS_URL
DEFAULT_LOGIN_URL, GET_METHOD, POST_METHOD
appliedPaths, pathMatcher
Constructor and Description |
---|
JwtFilter() |
Modifier and Type | Method and Description |
---|---|
protected boolean |
executeLogin(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
进行AccessToken登录认证授权
|
protected boolean |
isAccessAllowed(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
Object mappedValue)
这里我们详细说明下为什么最终返回的都是true,即允许访问
例如我们提供一个地址 GET /article
登入用户和游客看到的内容是不同的
如果在这里返回了false,请求会被直接拦截,用户看不到任何东西
所以我们在这里返回true,Controller中可以通过 subject.isAuthenticated() 来判断用户是否登入
如果有些资源只有登入用户才能访问,我们只需要在方法上面加上 @RequiresAuthentication 注解即可
但是这样做有一个缺点,就是不能够对GET,POST等请求进行分别过滤鉴权(因为我们重写了官方的方法),但实际上对应用影响不大
|
protected boolean |
isLoginAttempt(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
检测Header里面是否包含Authorization字段,有就进行Token登录认证授权
|
protected boolean |
onAccessDenied(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
这里我们详细说明下为什么重写
可以对比父类方法,只是将executeLogin方法调用去除了
如果没有去除将会循环调用doGetAuthenticationInfo方法
|
protected boolean |
preHandle(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
对跨域提供支持
|
createToken, getApplicationName, getAuthcScheme, getAuthzHeader, getAuthzScheme, getPrincipalsAndCredentials, getPrincipalsAndCredentials, isLoginAttempt, isLoginRequest, sendChallenge, setApplicationName, setAuthcScheme, setAuthzScheme
cleanup, createToken, createToken, getHost, isPermissive, isRememberMe, onLoginFailure, onLoginSuccess
getSuccessUrl, issueSuccessRedirect, setSuccessUrl
getLoginUrl, getSubject, onAccessDenied, onPreHandle, redirectToLogin, saveRequest, saveRequestAndRedirectToLogin, setLoginUrl
getPathWithinApplication, isEnabled, pathsMatch, pathsMatch, processPathConfig
afterCompletion, doFilterInternal, executeChain, postHandle
doFilter, getAlreadyFilteredAttributeName, isEnabled, isEnabled, setEnabled, shouldNotFilter
getName, setName, toStringBuilder
destroy, getFilterConfig, getInitParam, init, onFilterConfigSet, setFilterConfig
protected boolean isAccessAllowed(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, Object mappedValue)
isAccessAllowed
in class org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
protected boolean onAccessDenied(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws Exception
onAccessDenied
in class org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
Exception
protected boolean isLoginAttempt(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response)
isLoginAttempt
in class org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
protected boolean executeLogin(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws Exception
executeLogin
in class org.apache.shiro.web.filter.authc.AuthenticatingFilter
Exception
Copyright © 2020 Pivotal Software, Inc.. All rights reserved.