请教为什么我配置了loginUrl,但是每次请求的时候都是直接跳转一个login.jsp,但是我的login.jsp 并不在这个位置。
authc = org.nutz.integration.shiro.CaptchaFormAuthenticationFilter
authc.loginUrl = /sys/login
logout.redirectUrl= /sys/login
@qq_ec8eb7ab531d0b1e8cef055bd4d4c445
[main]
Session
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
sessionManager.sessionDAO = $sessionDAO
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
securityManager.sessionManager = $sessionManager
cookie
sessionIdCookie=org.apache.shiro.web.servlet.SimpleCookie
sessionIdCookie.name=nxzzld
sessionIdCookie.maxAge=946080000
sessionIdCookie.httpOnly=true
sessionManager.sessionIdCookie=$sessionIdCookie
sessionManager.sessionIdCookieEnabled=true
sessionManager.globalSessionTimeout=946080000
密码加密算法
credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher
credentialsMatcher.hashAlgorithmName=md5
credentialsMatcher.hashIterations=1
nutzdao_realm = com.nxzzld.sys.security.NxzzldDaoRealm
nutzdao_realm.credentialsMatcher=$credentialsMatcher
authc = org.nutz.integration.shiro.CaptchaFormAuthenticationFilter
authc.loginUrl = /sys/login
logout.redirectUrl= /sys/login
[urls]
/static/** = anon
/favicon.ico = anon
/getCaptcha=anon
/unauth = anon
/sys/login = authc
/sys/**=user
/logout = logout
一楼说的就是对的, 只是没说明白在哪里写
在MainSetup的init方法第一行写上
NutShiro.DefaultLoginURL="/sys/login";
至于为啥nutzbook没有写这个, 那是因为 NutShiro.DefaultLoginURL 默认值就是 "/user/login", 跟shiro.ini一致,所以没写
@wendal
public void init(NutConfig conf) {
NutShiro.DefaultLoginURL="/sys/login";
Ioc ioc = conf.getIoc();
Dao dao = ioc.get(Dao.class);
// Daos.createTablesInPackage(dao, "com.pumpkin", false);
}
设置了还是没有什么作用。 另外,这样做的话shiro.ini配置文件的authc.loginUrl 配置是不是可有可无?
authc.loginUrl = /sys/login
logout.redirectUrl= /sys/login
[urls]
/favicon.ico = anon
/getCaptcha=anon
/sys/doLogin=anon
/unauth = anon
/static/** = anon
/* = anon
/sys/** = authc
刚刚查了一下shiro的源码, 登陆的默认路径就是 login.jsp, 所以呢, 你可能需要debug一下这个方法
void org.apache.shiro.web.filter.AccessControlFilter.redirectToLogin(ServletRequest request, ServletResponse response) throws IOException
protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
String loginUrl = getLoginUrl();
WebUtils.issueRedirect(request, response, loginUrl);
}
@Wizzercn 顺序是没问题的。 我建立了个/sys/test ,当没登录访问/sys/test/的时候应该跳回/sys/login 但是却是跳回/login.jsp
@wendal 访问/sys/login 是可以直接跳回登录页的。 现在就是没登录 的时候访问/sys/test应该是跳回/sys/login可是它却跳回了/login.jsp 。 这个应该是配置上的问题。但是配置文件因该是没啥问题的。
@Wizzercn 我现在是访问/sys/login 是可以正常跳转到登录页的。 但是访问没权限的路径跳转不回/sys/login。是这个原因
@wendal 用注解的话没个上面都得加。用配置文件可以设置批量么~ 但是没太搞明白~ 不过还是谢谢兽总。
@wendal 好的,谢谢兽总