gpt4 book ai didi

shiro - 如何使用 Shiro 对用户进行身份验证?

转载 作者:行者123 更新时间:2023-12-01 05:29:18 27 4
gpt4 key购买 nike

我已经一遍又一遍地讨论如何让用户登录 Shiro,但似乎仍然缺少一个重要的部分:shiro 如何根据存储的用户名和密码验证给定的用户名和密码?我想到的最多的是 It is each Realm's responsibility to match submitted credentials with those stored in the Realm's backing data store from here .但这是怎么做的呢?

以下是我尝试过的,但结果仍然是无效的身份验证。

登录 Controller

@RequestMapping(value = "/login.htm", method = RequestMethod.POST)
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object cmd, BindException errors) throws Exception {

LoginCommand command = (LoginCommand) cmd;
UsernamePasswordToken token = new UsernamePasswordToken(command.getUsername(), command.getPassword());
System.out.println("onSubmit");
System.out.println(token.getUsername());
System.out.println(token.getPassword());

try
{
SecurityUtils.getSubject().login(token);
} catch (AuthenticationException e) {
errors.reject("error.invalidLogin", "The username or password was not correct.");
}

if (errors.hasErrors()) {
return showForm(request, response, errors);
} else {
return new ModelAndView("accessTest");
}
}

领域
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;

System.out.println("doGetAuthenticationInfo");
System.out.println(user.getUsername());
System.out.println(user.getPassword());

// user is a test object in place of a database
if( user != null ) {
return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
} else {
return null;
}
}

最佳答案

发现了答案。这是一个愚蠢的。我复制了一些示例代码,他们将凭据匹配器设置为 HashedCredentialsMatcher。我没有做任何散列,所以它不起作用。删除了 setCredentialsMatcher 并且它起作用了。

关于shiro - 如何使用 Shiro 对用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12217495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com