f嗨,
我需要构建一个具有类似功能的门户网站,其中请求中的参数将标识门户网站。像这样 http:/domain/controller/action/portal
现在我的问题是,如果门户不存在,则必须重定向到其他站点/页面,并且用户可以登录到一个门户,但如果用户进入其他门户,则必须将用户重定向回登录页面对于那个门户。
我现在有一些工作,但我觉得管道中必须有一个中心位置来处理这个问题。我当前的解决方案使用自定义操作过滤器,它检查门户参数并查看门户是否存在并检查用户是否登录到该门户(用户登录的门户在身份验证 cookie 中)。我在 application_postauthentication 事件中创建了自己的 IIndentiy 和 IPrincipal。
我目前的方法有两个问题:
1:它并没有真正强制执行,我必须将属性添加到所有 Controller 和/或操作。
2:对用户进行身份验证并没有真正起作用,我希望它起作用。但是为此,当我创建 IPrincipal/IIndenty 时,我需要访问路由的参数,但我似乎找不到正确的位置来执行此操作。
希望有人能给我一些指点,
理查德.
最佳答案
有几种不同的方法可以做到这一点(一如既往......)。如果您想在 Controller 中(或通过属性)执行此操作,但又想全局执行此操作,那么您始终可以使用自定义基本 Controller 类并在那里应用逻辑。 actionfilter 属性是继承的,bob 是你的叔叔。
另一方面,这对我来说真的像是一个路由问题。所以我可能会考虑创建一个自定义路由来处理你正在做的事情。如果你这样做,那么一旦你让它工作,你就会想要在负载下测试它以确保你有一个好的缓存策略(这样每个请求都不是路由的数据库查找+另一个对于 Controller 中发生的任何事情)。
关于asp.net-mvc - asp.net mvc 和类似功能的门户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2910558/