我正在使用AngularJS开发一个SPA应用程序,使用REST Web API,在一个非常小的ASP.NET MVC4层上.由于这里不重要的原因,我没有使用MVC4的默认帐户控制器.
基本上,我想在用户之间分享"任务".我的目标是能够通过电子邮件将特定"任务"实体的URL发送给任何用户.单击该URL应启动身份验证.身份验证成功后,我想显示真实的任务页面信息.
AngularJS使我的URL有#符号,或者显示任务"XYZ123"的页面的URL是:http://hostname.com/#/tasks/XYZ123
ASP.NET将对该URL的未授权访问重定向到:http: //hostname.com/Home/Login?ReturnUrl =%2f#/tasks/XYZ123
这没关系,但相关的控制器方法"切断"#的路径,所以在:
public ActionResult Login(string returnUrl)
Run Code Online (Sandbox Code Playgroud)
'returnUrl'的值只是"/"
所以,我正在失去这条道路:我想建立一个具有原始网址的"Connect with Facebook"链接,例如:
http://hostname.com/Login/ExternalLogin?ReturnUrl=%2F#/tasks/XYZ123
但是我不能.
解决这个问题的正确方法是什么?
我可以考虑在没有#tag的情况下创建自己的重定向服务URL,但是这个解决方案意味着额外的工作,并且仅涵盖系统发送带有任务URL的消息的情况 - 人们仍然会尝试从中复制/粘贴位置URL浏览器.
谢谢你的任何提示.
马克斯
在Play Framework中定义的"最佳实践"是什么?具有一些"计算"字段的对象,而不是直接映射到与实体相关的任何字段?
例如,我想为具有"定价"和"实际价格"的"产品"定义模型.
就DB而言,"列表价格"直接映射到模型类中的"int listPrice".然而,"实际价格"是使用与"产品"本身无关的附加数据(例如,一般商店折扣,部门特定折扣等 - 涉及的一些"商业逻辑")从"定价"计算的.
由于我的应用程序需要公开REST API(不只是一个web应用程序) - 我真的希望延长"产品"类,以支持"计算"领域,使双方"MyProduct.listPrice"和"MyProduct.finalPrice"将得到支持.
是否可以将"瞬态"成员添加到模型类中?如果没有,应该定义一个从模型派生的类,并使用它?
谢谢你的任何提示.
马克斯
我试图为Controller方法中调用的参数添加"自定义"验证消息,每个特定方法(不在全局消息列表中)
我在一个简单的例子中找到了如何做到这一点,比如:
@Required(message ="error.shouldspecifyname")字符串用户名
我想知道我是否可以使用带参数的验证器做类似的技巧.
所以,我想转换
@Equals("passwordRepeat")字符串密码
喜欢的东西
@Equals("passwordRepeat",message ="error.passwordsshouldmatch")
什么是正确的语法?
提前致谢.
我正在使用JPQL来进行Play Framework的模型查询.
我想知道JPQL是否支持LEFT JOIN的"复杂"ON条件.
在我的例子中,有2个表:
假设我想计算没有特定日期记录的所有应用程序的列表.
在纯SQL中,我使用以下查询获得结果:
SELECT a.* FROM app a LEFT JOIN aggregationhistory ah
ON a.id = ah.app_id AND ah.fromDate = '2012-03-14 00:00:00'
WHERE ah.fromDate is NULL
Run Code Online (Sandbox Code Playgroud)
当然,"开启"状态下的"和"是必不可少的.
现在,我看到的所有JPQL示例都是:
SELECT a.* FROM AggregationHistory ah LEFT JOIN ah.app a WHERE ...
Run Code Online (Sandbox Code Playgroud)
那么,唯一支持的"ON"条件是ID的"匹配"?(似乎对我帮助不大)
我可以想到解决方法(比如,使用"本机查询",或使用JOIN来获取有记录的应用程序列表,并进行比较).但我想知道我在SQL中进行的查询是否可以转换为JPQL.
谢谢