我正在构建一个使用 OpenId 来验证用户身份的 Web 应用程序,就像 Stackoverlfow 所做的那样。也会有一个移动应用程序,例如 Android 或 iPhone。这些应用程序必须以某种方式进行身份验证或登录,才能访问数据并更新属于用户的内容。由于无法提供用户名和密码来验证移动设备,我想知道如何实现这一点。
我想到了两种方法:
在服务器上生成一些必须在设备上输入的密钥。当移动设备发送或请求数据时,该密钥将作为身份验证密钥发送,并且可以通过这种方式链接用户。使用此选项时,密钥应以某种方式传输给用户,这样他就不必输入密钥。可能通过电子邮件、短信或扫描条形码。
移动应用程序使用浏览器或显示一个集成的 Web 面板,该面板可打开 Web 应用程序的特殊页面。在此页面上,用户必须登录,然后才能允许移动应用程序读取和写入数据。
我的问题是:这两种方法都可行且安全吗?您更喜欢哪一个?有哪些细节需要注意?还有其他方法可以做到这一点吗?如果我没问题的话,就不可能在设备上使用 OpenId,并以这种方式链接移动设备和 web 应用程序,对吧?
我正在尝试web.py在GAE上运行应用程序.我希望像以下那样可能有用
import web
from google.appengine.ext.webapp.util import run_wsgi_app
[...]
def main():
app = web.application(urls, globals())
run_wsgi_app(app)
Run Code Online (Sandbox Code Playgroud)
但显然该app对象不符合run_wsgi_app函数的期望.错误消息说得好像app has no __call__ function,所以我尝试了传递app.run,但这也没有用.
我该如何拨打电话run_wsgi_app?
我在a .cpp文件中声明了一个全局函数void functionA().我希望functionA()在启动前(不在内部main())只调用一次.我意识到的是,如果功能是int functionB(),我可以使用它static int A = functionB().但对于返回值void,我该怎么做?
谢谢
我得到了一个trie背后的概念.但是在实施方面我有点困惑.
我认为构建Trie类型最明显的方法是Trie维护内部Dictionary<char, Trie>.事实上,我已经用这种方式编写了一个,并且它可以工作,但是......这看起来有点过分了.我的印象是trie应该是轻量级的,并且每个节点都有一个单独的Dictionary<char, Trie>对我来说似乎不是很轻量级.
有没有更合适的方法来实现我缺少的这种结构?
更新:好的!基于Jon和leppie的非常有用的输入,这是我到目前为止所提出的:
(1)我有Trie类型,它有一个_nodes类型的私有成员Trie.INodeCollection.
(2)Trie.INodeCollection界面有以下成员:
interface INodeCollection
{
bool TryGetNode(char key, out Trie node);
INodeCollection Add(char key, Trie node);
IEnumerable<Trie> GetNodes();
}
Run Code Online (Sandbox Code Playgroud)
(3)此接口有三种实现方式:
class SingleNode : INodeCollection
{
internal readonly char _key;
internal readonly Trie _trie;
public SingleNode(char key, Trie trie)
{ /*...*/ }
// Add returns a SmallNodeCollection.
}
class SmallNodeCollection : INodeCollection …Run Code Online (Sandbox Code Playgroud) 嗨伙计们,
我想在关键字字段中搜索,如集合中的搜索键.
例如,我的关键是"Wing"关键字是"Wing Dress Others"的空格我应该写什么呢?
错误:方法'布尔比较(System.String,System.String)'没有支持的SQL转换.
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString.HasKeys())
{
DbDataContext db = new DbDataContext();
var Query = from n in db.Products
where Compare(n.Keywords, Request.QueryString["key"])
select n;
DataList1.DataSource = Query;
DataList1.DataBind();
}
}
bool Compare(string keywords,string key)
{
string[] items = keywords.Split(' ');
foreach (string item in items)
if (item.Equals(key)) return true;
return false;
}
Run Code Online (Sandbox Code Playgroud) 我有一个事件模型,它有两个命名范围:
class Event < ActiveRecord::Base
scope :future, lambda { where('events.date >= ?', Time.zone.now) }
scope :past, lambda { where('events.date <= ?', Time.zone.now) }
end
Run Code Online (Sandbox Code Playgroud)
我通过创建两个新的控制器动作(名为"future"和"past")从我的控制器调用这些范围:
我的控制器:
class EventsController < InheritedResources::Base
actions :index, :show, :future, :past
has_scope :future
has_scope :past
def future
index! { @events = Event.future }
end
def past
index! { @events = Event.past }
end
end
Run Code Online (Sandbox Code Playgroud)
我还有这些额外行动的观点和路线.
这很好用.我的应用程序执行我想要的操作,并且可以链接到我的侧边栏中的新操作,如下所示:
%li
= link_to 'Events Home', events_path
%li
= link_to 'Future Events', future_events_path
%li
= link_to 'Past Events' past_events_path
Run Code Online (Sandbox Code Playgroud)
现在我对这个设置的问题是,虽然它工作得很好,但我不喜欢我必须为这些额外范围创建新的动作,视图和路由这一事实.我不认为我这样做是正确的.基本上我正在尝试过滤索引页面上的结果,但我必须创建新的操作,路由和视图来执行此操作.这看起来有点麻烦,我想知道是否有另一种方式.
如果我可以取消"未来"和"过去"控制器操作并且只是从视图中调用范围,那将是很好的: …
在Win7上运行的c ++程序中,有没有办法伪造鼠标移动或类似的东西,只是为了防止屏幕保护程序启动和系统进入睡眠状态?我正在寻找最小的方法,我不想使用.NET.谢谢,-nuun
我有一个带标签页的标签控件(cf).
标签太小了...可以告诉我怎样才能让它们更大?
如果我有以下存储库:
public IQueryable<User> Users()
{
var db = new SqlDataContext();
return db.Users;
}
Run Code Online (Sandbox Code Playgroud)
我知道只有在触发查询时才会打开连接:
public class ServiceLayer
{
public IRepository repo;
public ServiceLayer(IRepository injectedRepo)
{
this.repo = injectedRepo;
}
public List<User> GetUsers()
{
return repo.Users().ToList(); // connection opened, query fired, connection closed. (or is it??)
}
}
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,我还需要使我的Repository实现IDisposable吗?
Visual Studio Code Metrics当然认为我应该.
我正在使用IQueryable因为我将查询控制到我的服务层(过滤器,分页等),所以请不要就我使用它的事实进行架构讨论.
BTW - SqlDataContext是我的自定义类,它扩展了Entity Framework的ObjectContext类(所以我可以拥有POCO派对).
所以问题 - 我真的必须实现IDisposable吗?
如果是这样,我不知道这是如何可能的,因为每个方法共享相同的存储库实例.
编辑
我正在使用Depedency Injection(StructureMap)将具体的存储库注入服务层.这个模式跟随app堆栈 - 我正在使用ASP.NET MVC,并且具体服务被注入到控制器中.
换一种说法:
我正在使用混合模式将依赖项注入我的控制器,根据StructureMap文档,这些实例将存储在HttpContext.Current.Items中.
所以,我不能这样做:
using (var repo = new …Run Code Online (Sandbox Code Playgroud) structuremap idisposable iqueryable repository objectcontext
我的计划是让用户上传一个excel文件,一旦上传,我将显示包含上传的excel内容的可编辑表单,一旦用户确认输入正确,他/她点击保存按钮并保存这些项目在某种模式.
为此,我写了这个观点和形式:
形成:
IMPORT_FILE_TYPES = ['.xls', ]
class XlsInputForm(forms.Form):
input_excel = forms.FileField(required= True, label= u"Upload the Excel file to import to the system.")
def clean_input_excel(self):
input_excel = self.cleaned_data['input_excel']
extension = os.path.splitext( input_excel.name )[1]
if not (extension in IMPORT_FILE_TYPES):
raise forms.ValidationError( u'%s is not a valid excel file. Please make sure your input file is an excel file (Excel 2007 is NOT supported.' % extension )
else:
return input_excel
Run Code Online (Sandbox Code Playgroud)
视图:
def import_excel_view(request):
if request.method == 'POST':
form = XlsInputForm(request.POST, request.FILES)
if …Run Code Online (Sandbox Code Playgroud) c# ×2
c++ ×2
.net ×1
android ×1
dictionary ×1
django ×1
excel ×1
has-scope ×1
idisposable ×1
iphone ×1
iqueryable ×1
linq-to-sql ×1
mobile ×1
python ×1
repository ×1
sleep ×1
structuremap ×1
tabcontrol ×1
tabpage ×1
trie ×1
web.py ×1
windows-7 ×1
xlrd ×1