- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Spring MVC、Tiles 和 Shiro。
这是我的未授权Url 属性的配置方式:<property name="unauthorizedUrl" value="/unauthorized"/>
我的期望是,当 MyAuthorizingRealm
发现无效凭据,Shiro 将重定向到 /unauthorized
.
但是,这不会发生在我提交表单时。我有登录 @Controller
映射到处理 /login
的 GET 和 POST 操作.用于访问 url /lists
显示登录表单。所以它似乎在一种情况下有效,但在另一种情况下无效。
@Controller
@RequestMapping(value = "/login")
public class LoginController {
@RequestMapping(method = RequestMethod.GET)
public String getLoginFormView(Model model) {
return "login";
}
// if this method doesn't exist a Post not supported exception is thrown
@RequestMapping(method = RequestMethod.POST)
public String handlePost() {
return "this view doesn't exist";
}
}
AuthenticationException
来自
MyAuthorizingRealm.doGetAuthenticationInfo()
我仍然无法让 Shiro 重定向到
/unauthorized
.它总是以过滤器链结束并执行
@Controller
中的 POST 方法。 ;当然,我希望改为重定向。
webapp-context.xml
:
web.xml
:
/lists
时 Shiro 起作用.但是,当提交登录表单时,重定向到
/unauthorized
永远不会发生。注意,检测到登录提交:
/unauthorized
最佳答案
我想我看到了两个问题:
1) 你的 spring xml 的 pastebin 没有显示 SecurityManager
正在配置您的领域。 IE。它需要看起来像这样:
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="myRealm"/>
</bean>
subject.login
被调用而不依赖于 Shiro 的内置 FormAuthenticationFilter (
authc
)。
authc
过滤为
filters
在 spring.xml 中执行此操作属性(property)和使用
authc
作为您配置的过滤器的名称:
<bean id="passthruAuthcFilter" class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter">
<property name="loginUrl" value="/login"/>
</bean>
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
...
<property name="filters">
<util:map>
<entry key="authc" value-ref="passthruAuthcFilter"/>
</util:map>
</property>
...
</bean>
FormAuthenticationFilter
自动执行此操作,但是当您自己执行登录时,如果需要,您有责任执行此重定向。
LoginController
的 handlePost 方法:
subject.login(authcToken);
WebUtils.redirectToSavedRequest(request, response, yourFallbackUrlIfThereIsntASavedRequest);
return null; //tells Spring MVC you've handled the response, and not to render a view
关于redirect - Shiro 不会重定向到具有无效登录名的未授权Url - Shiro with Spring 和 Tiles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303464/
我将自定义屏幕与“发件人”和“收件人”电子邮件以及textview字段结合使用,以获取用户的反馈。那么,是否有任何iOS API可以自动填充“发件人”字段? 最佳答案 如果它潜在地存在一个巨大的安全漏
Chrome 会使用登录用户名自动填充网站表单上的一个框,当您提交表单时,它会要求保存登录信息。 我如何强制 Chrome 保留输入字段? 它为了自己的利益而试图变得太聪明。 它会自动填充登录用户名
当我们重装系统,或者是重装数据库之后,当附加数据库之后,发现数据库里面 有用户名,但是在sqlserver里面没有 登陆名 例如 先看 用户名 是有他上次系统的用户名的 现在我们先
首先我会说我的数据库技能很弱,很可能我只是设计错误。 我正在开发一个 Django 1.3 应用程序,它允许客户登录以查看他们“帐户”的各个方面。其中一个模型是“客户”,我在该模型中为“用户名”添加一
在我部署在 Intranet 上的 ASP.NET 应用程序中,我在 Web 服务中使用类似这样的东西来获取当前用户的 Windows 登录名: string user = User.Identity
我已经在这个问题上停留了好几天 - 非常感谢任何帮助。 我有一个调用用 C# 编写的 DLL 的 SQL 触发器。在此函数中,我需要发起触发触发器的 SQL 命令的人员的 Windows 登录名。我是
我正在尝试在我的机器上设置本地 WP 环境。我的 .htaccess 文件(与我的 index.php 文件位于同一文件夹中)如下所示: # BEGIN WordPress RewriteEngin
今天第一次尝试使用 Laravel。当我尝试访问 localhost/project/public 时出现以下错误: InvalidArgumentException Route [login] no
我正在创建非常简单的 ATM 机。我有 MySQL 数据库,其中包含以下列:登录 ID、密码、金钱。我想更改我的方法,该方法可以在开始时验证登录名和密码的正确性(并在此之后执行某些操作)。所以如果登录
我正在创建一个 Windows 服务,让不同的用户通过 RDP 连接到 PC。 我需要知道如何通过某种 WinAPI 或修改注册码或类似方式在 PC 上添加、更改和删除登录凭据(即登录 + 密码)。
我正在 Laravela 中创建一个应用程序,当我尝试访问我的 url 时,例如:http://example.com它返回这个奇怪的错误?这仅在我不访问/login 时发生? InvalidArgu
我正在尝试在我的 laravel vue 应用程序中获取当前用户。每当我尝试获取它时,我都会收到此错误: Symfony\Component\Routing\Exception\RouteNotFou
.htaccess 是一种过滤页面访问的便捷方式,这要归功于基本身份验证。 在这种情况下 Require user chandler monica ross rachel 将授权上述 4 人访问该
我使用多个帐户来管理客户的 iPhone/iPad 应用程序。因此我需要使用不同的登录名连接到iTunes Connect。如何更改 XCode 或 Application Loader 中的登录信息
当我尝试通过以下方式创建 SQL Server 登录时 CREATE LOGIN [ourdomain\SQLAccessGroup] FROM WINDOWS; 我收到此错误 The server
我已经使用 py2exe 创建了我的 python 文件的 exe,并使用特定用户运行此 exe(用于目录访问权限)。现在可执行文件位于不同的登录名中,我如何获取系统的用户名。 getpass.get
我在服务器 A 上有一个 Bash 脚本,它通过 logname 命令找到登录的 SSH 用户,即使它是以 root 运行的使用 sudo。如果我从我的桌面通过 SSH 连接到服务器 A 并运行脚本,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我使用 Laravel passport 进行身份验证 在路由 api.php 中 Route::get('/todos', function(){ return 'hello'; })->mid
大约一个半月前,我开始学习php,我开始尝试创建自己非常简单的cms,以便学习如何构造与mysql数据库交互的基本crud脚本,等等。 我目前正在为我的cms的私有管理部分建立我的登录表单,通过这样做
我是一名优秀的程序员,十分优秀!